Vider le buffer
chocolat8886
-
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
pour vider le buffer, est ce que int c; while ((c = getchar()) != EOF) pourrait suffir
pourquoi rajouter c!= '\n' ?
merci
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 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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. -
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 destdin
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 commescanf()
.
Tu proposes :
int c; while ((c = getchar()) != EOF) ;
Tu peux faire cela si tu veux consommer tout le contenu du tampon destdin
, même s'il contient des caractères concernant une ligne suivante. Avec ce code, utiliser une variableint 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