jestem zdezorientowany kawałek kodu znalezionego w funkcji uczę: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')
;
}
Co ja nie bardzo rozumiem tutaj jest wykorzystanie funkcji Flush()
. Chodzi mi o to, że czytana przeze mnie książka wyjaśnia to, mówiąc, że uniemożliwia to użytkownikowi wprowadzenie więcej niż jednego znaku, a następnie odczytanie tego znaku, gdy zostanie poproszony o wprowadzenie go po raz drugi.
To, czego nie rozumiem, to to, w jaki sposób zapobiega temu. Nic nie robi. Wszystko to jest polecenie while
. (Chociaż to prawda ...... co ?????) Nie ma sensu.
OHHHH, nie wiedziałem, że getchar usunął następny znak w buforze wejściowym - to wyjaśnia moje zamieszanie. Dziękuję Ci. – startuprob