[langageC]
Fermé
ABDOU1919
Messages postés
9
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
19 juillet 2008
-
15 nov. 2007 à 12:50
mamiemando Messages postés 32298 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 mars 2023 - 15 nov. 2007 à 18:46
mamiemando Messages postés 32298 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 mars 2023 - 15 nov. 2007 à 18:46
A voir également:
- [langageC]
- Je veux une doccumentation libre langageC/C++ - Forum C++
2 réponses
ctiti60
Messages postés
1017
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
27 mai 2021
70
15 nov. 2007 à 12:57
15 nov. 2007 à 12:57
Salut,
Essayes avec un AND (&&) au lieu du OR (||)
Essayes avec un AND (&&) au lieu du OR (||)
mamiemando
Messages postés
32298
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 mars 2023
7 575
15 nov. 2007 à 18:46
15 nov. 2007 à 18:46
Oula alors pour commencer c'est bien && et || qu'il faut utiliser. Ensuite il faut
- éviter les variables gloables (ici i et t).
- mettre un type de retour à main : tu es sensé retourner un int (0 quand tout va bien, un code d'erreur sinon).
Le problème c'est que scanf commence à lire uniquement quand tu appuies sur entrée. Il faut donc contrôler la longeur du message une fois qu'il est saisi.
Exemple :
Ce qui donne (ici sous linux) :
Pour plus de details sur getline :
http://man.developpez.com/man3/getline.3.php
Bonne chance
- éviter les variables gloables (ici i et t).
- mettre un type de retour à main : tu es sensé retourner un int (0 quand tout va bien, un code d'erreur sinon).
Le problème c'est que scanf commence à lire uniquement quand tu appuies sur entrée. Il faut donc contrôler la longeur du message une fois qu'il est saisi.
Exemple :
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
int main(){
const unsigned N = 20;
unsigned n = N;
char *t = (char *)calloc(N,sizeof(char));
getline(&t,&n,stdin);
if(n > N){
printf("message trop long\n");
}else{
printf("%s\n",t);
}
free(t);
return 0;
}
Ce qui donne (ici sous linux) :
(mando@aldur) (~) $ ./a.out j'aime les tapirs j'aime les tapirs (mando@aldur) (~) $ ./a.out 123456789012345678901234567890 message trop long
Pour plus de details sur getline :
http://man.developpez.com/man3/getline.3.php
Bonne chance