Je suis confus par un morceau de code qui se trouve dans une fonction que je suis en train d'étudier:C getchar vs scanf
char GetCommand(void)
{
char command;
do {
printf("Enter command (q=quit, n=new, l=list): ");
scanf("%c", &command);
Flush();
}
while ((command != 'q') && (command != 'n')
&& (command != 'l'));
printf("\n----------\n");
return(command);
}
void Flush(void) {
while (getchar() != '\n')
;
}
Ce que je ne comprends pas tout à fait ici est l'utilisation de la fonction Flush()
. Je veux dire, le livre que je suis en train de lire l'explique en disant qu'il empêche l'utilisateur d'entrer plus d'un caractère et de le lire quand il est invité à entrer la deuxième fois. Ce que je ne comprends pas, c'est comment Flush()
empêche cela. Cela ne fait rien. Tout ce qu'il est est une commande while
. (Alors que c'est vrai ...... quoi ?????) n'a pas de sens.
OHHHH, je ne savais pas que getchar enlevé le prochain caractère dans le tampon d'entrée - ce qui explique ma confusion. Je vous remercie. – startuprob