Langage C : Besoin d'explication

Résolu/Fermé
clemou01 - 3 déc. 2010 à 09:54
 clemou01 - 3 déc. 2010 à 10:25
Bonjour,

J'ai trouvé un bout de code dans un exercice que je n'arrive pas à comprendre. Pourriez vous m'expliquer ce qui se passe.

Merci d'avance.

Voici le code :

void clearBuf(void)
{
int c;
while ((c = getchar()) != '\n' && c != EOF);
}


En sachant qu'en rajoutant clearBuf(); dans mon code, ceci me permet d'empêcher l'utilisateur d'entrer une lettre à la place d'un chiffre.

A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
3 déc. 2010 à 10:11
Bonjour,

Ce code permet de vider le buffer clavier.
En effectuant des lectures clavier, il est courant qu'il y ait des résidus de caractères qui n'ont pas pu être pris en compte par la variable de lecture.
Par exemple : char buf[5]; fgets(buf, sizeof buf, stdin); Si l'utilisateur tape une chaîne de 10 caractères, il y aura des caractères qui resteront dans le buffer clavier.
Avant de refaire une lecture clavier, il est important (sauf cas particulier) de vider le buffer. Pour ceci, il suffit de lire les caractères avec getchar() jusqu'à ce qu'on rencontre '\n' ou EOF qui seront les derniers caractères du buffer clavier. D'où le code de ta fonction.

Cdlt,
3
Ah ! Merci je comprend mieux maintenant :)
0