人们通常会提到
while( getchar() != '\n' )
在清除输入缓冲区或溢出时。
fgetc
或者getc
也工作。例如:
while( fgetc(stdin) != '\n' )
和
while( getc(stdin) != '\n' )
人们总是使用 有什么特别的原因getchar
吗?
使用fgetc
or有什么缺点getc
吗?
人们只喜欢getchar
从标准输入读取的情况。当需要从文件中读取时,没有理由不将其替换为getc
/ 。fgetc
'\n'
话虽如此,该构造是危险的,因为在输入流中没有的情况下,它可能导致无限循环。例如,如果最终用户使用Ctrl+D或Ctrl+关闭流,则具有像您这样的循环Z的程序将永远不会退出。while
您需要EOF
在忽略输入的循环中检查:
int ch;
while ((ch = getchar()) != '\n' && ch != EOF);
stdin
,请使用getchar
.getc
.fgetc
. (对我来说,这些原因非常模糊,我从不调用 fgetc,我建议使用getc
.)