Vider le buffer

Signaler
-
Messages postés
5380
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
3 juillet 2020
-
Bonjour,
pour vider le buffer, est ce que int c; while ((c = getchar()) != EOF) pourrait suffir
pourquoi rajouter c!= '\n' ?
merci



Configuration: Windows / Chrome 81.0.4044.129

2 réponses

Messages postés
11462
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
655
bonjour,
merci d'utiliser les balises de code quand tu postes du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
tu ne nous montres pas le code avec le second test. il a peut-être comme but de ne pas lire au delà de la ligne.
Messages postés
5380
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
3 juillet 2020
884
Salut chocolat8886,

 int c;
 while((c = getchar()) != '\n' && c != EOF)
  /* vider stdin */ ;


Est la façon concise et portable de consommer le reste du contenu de
stdin
sur la ligne de saisie en ignorant tous les caractères rencontrés jusqu'au retour à la ligne et en arrêtant la boucle s'il ne reste plus rien et qu'un caractère de fin de ligne n'a pas été rencontré.

Cela permet par exemple de gérer une saisie par ligne avec des fonctions comme
scanf()
.

Tu proposes :

 int c;
 while ((c = getchar()) != EOF)
     ;


Tu peux faire cela si tu veux consommer tout le contenu du tampon de
stdin
, même s'il contient des caractères concernant une ligne suivante. Avec ce code, utiliser une variable
int c;
est inutile.

Note que j'ai rajouté le
;
que tu avais oublié. Prend l'habitude de le mettre sur une ligne suivante tout seul, pour bien signaler dans ton code cette construction particulière.

Dal