【发布时间】:2017-05-13 14:14:00
【问题描述】:
我正在编写一个只需要获取单个数字的函数,我决定使用 getchar() 而不是 scanf()。
但是,由于我只需要一个字符,因此我没有使用数组来获取它。这会导致问题,因为我没有找到“/n”字符的循环。为了确保我的缓冲区在再次使用 getchar() 之前被清除,我写了这个:
while (getchar() != '\n'){}
它按我的需要工作,但这是解决这个问题的“正确”方法吗?
我尝试使用 fflush(stdin),但它似乎没有任何效果。
感谢您的所有回复,我经常查看 cmets 并愿意回答问题。
【问题讨论】:
-
while在没有换行符时(例如在文件结尾处)运行到非终止循环。 -
@Jens 如果getchar成功则没有无限循环。
-
@VladfromMoscow 你怎么知道它会成功?
-
@Jens 通过检查 getchar 调用返回的值。
-
@VladfromMoscow 对;在这里只检查它是否是换行符。你能看出这怎么可能是一个非终止循环?提示:当 stdin 为 "foobar
" 时会发生什么?