[quote=“neness”]ça fonctionne merci mais le coups du :
while ( (c = getchar()) != ‘\n’ && c != EOF );
pas très bien saisi l’utilité en + c long pour apprendre par coeur ça le fais pas trop !
[/quote]
Pour comprendre, fais ce test :
[code]#include <stdio.h>
int main()
{
int c;
c = getchar(); /* ici tape ab + entrée */
printf("%c\n", c);
c = getchar();
printf("%c\n", c);
return 0;
}
[/code]
getchar() lit un caractère sur l’entrée standard (après l’appuie de la touche entrée, comme scanf()). Tu remarqueras que après que tu aies tapé ab [entrée], le programme affiche :
a
b
et se termine, au lieu d’afficher a et d’attendre une autre saisie comme on aimerait que ça se passe.
Pourquoi ? Parce le premier getchar() ne ‘prend’ que le a. Il reste donc b et \n (entrée) sur l’entrée standard (stdin). D’où le :
do {
c = getchar();
} while (c != '\n');
( équivalent de while ( (c = getchar()) != ‘\n’) ; en plus compréhensible. )
à rajouter après les getchar(), pour digérer les caractères inutiles. Le EOF c’est pour la fin de fichier, c’est pour si jamais tu tapes Ctrl + D pour que ça puisse terminer, mais tu peux t’en passer.
Tu peux en faire une fonction pour éviter de tout taper à chaque fois.