Chaîne de caractère - C - Programmation
Marsh Posté le 01-06-2015 à 21:26:09
Donne donc ton code réel, parce que là avec du char aide(200); ça ne compile même pas! Et configure ton compilateur pour qu'il affiche la maximum de warnings! (sous GCC rajouter le paramètre -Wall)
Marsh Posté le 01-06-2015 à 21:35:08
Citation : Mais j'arrive pas à lire la 1ère phrase il commence directement de la deuxième |
Tu veux dire écrire la 1ere phrase? Effectivement le programme affiche directement
Code :
|
C'est probablement du au fait que scanf() laisse dans le buffer d'entrée le saut de ligne qui vient de l'appui sur entrée après avoir tappé N. Faut vider le buffer. On voit souvent fflush(stdin) mais c'est FAUX car comportement non déterminé. À la place on peut utiliser ceci
Code :
|
mais il y a peut-être mieux...
De manière générale: N c'est pas très parlant, peut-être plutôt genre nbphrases? Faut aussi vérifier ce que retourne malloc(). Et puis si on entre des lettres pour N le programme plante. A revoir mais les histoires d'entrée-sortie je laisse ma place à quelqu'un d'autre...
(Je fais exprès de ne pas donner de code complet corrigé...)
Marsh Posté le 01-06-2015 à 21:40:54
Ah oui, ton gets(aide); il ne limite pas le nombre de caractères, si on en entre trop --> buffer overflow :-(
Marsh Posté le 01-06-2015 à 02:21:35
Bonsoir tout le monde j'aurais besoin de votre aide
J'aimerais traiter N chaîne de caractère avec les pointeurs (sachant que le N est donner par l'utilisateur)
Voici ce que j'ai fait bien-sûr sans oublier les biblio)
int i,N;
printf(''donner N\n'');
scanf("%d",&N);
char *phrase[N]; char aide(200);
for(i=0;i<N;i++){
printf(" veuillez saisir la phrase %d\n" );
gets(aide);
phrase[i]=(int*)malloc(strlen(aide)*sizeof(char)+1);
strcpy(phrase[i],aide);
}
Mais j'arrive pas à lire la 1ère phrase il commence directement de la deuxième