我通過一段代碼在我學習的功能發現困惑:Ç的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')
;
}
我不太明白這裏是Flush()
函數的用法。我的意思是,我正在閱讀的這本書解釋說,它防止用戶輸入多於一個字符,然後在第二次提示輸入時讀取該字符。
我不明白的是Flush()
如何防止這種情況發生。它沒有做任何事情。它全部是一個while
命令。 (雖然這是真的......什麼?)沒有道理。
OHHHH,我不知道getchar刪除了輸入緩衝區中的下一個字符 - 這解釋了我的困惑。謝謝。 – startuprob 2010-09-04 02:54:14