Vider le buffer

chocolat8886 -  
[Dal] Messages postés 6373 Statut Contributeur -
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

yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 585
 
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.
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
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
0