人们通常会提到
while( getchar() != '\n' )
清除输入缓冲区或溢出时。
fgetc
或getc
也有效。例如:
while( fgetc(stdin) != '\n' )
和
while( getc(stdin) != '\n' )
人们总是使用getchar
是否有任何特殊原因?
使用fgetc
或getc
是否有任何不利之处?
答案 0 :(得分:2)
人们在仅从标准输入读取的情况下更喜欢getchar
。当需要从文件中读取时,没有理由不用getc
/ fgetc
替换它。
如上所述,构造是危险的,因为在输入流中没有'\n'
的情况下,它会导致无限循环。例如,如果最终用户使用 Ctrl + D 或 Ctrl + Z 关闭流,则使用像你这样的while
循环永远不会退出。您需要在忽略输入的循环中检查EOF
:
int ch;
while ((ch = getchar()) != '\n' && ch != EOF);
答案 1 :(得分:0)
stdin
,请使用getchar
。getc
。fgetc
。 (对我来说,这些原因是如此模糊,以至于我从不打电话给fgetc,我建议使用getc
。)