我通过一段代码在我学习的功能发现困惑:Ç的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