使用fflush(stdin)因此,谷歌快速搜索fflush(stdin)清除输入缓冲区会发现许多网站警告不要使用它。然而,这正是我的CS教授教授课程的原因。使用有多糟糕fflush(stdin)?即使我的教授正在使用它并且似乎完美无缺地工作,我是否真的应该放弃使用它?
4 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
简单:这是未定义的行为,因为fflush
它意味着在输出流上调用。这是C标准的摘录:
int fflush(FILE * ostream);
ostream指向输入流或未输入最近操作的更新流,fflush函数导致该流的任何未写入数据被传递到主机环境以写入文件; 否则,行为未定义。
所以这不是一个“多么糟糕”的问题。显然fflush(stdin)
是错的,你永远不能使用它。
函数式编程
TA贡献1807条经验 获得超9个赞
对于打开读取的流,如果文件尚未处于EOF,并且文件是能够搜索的文件,则底层打开文件描述的文件偏移量应设置为流的文件位置,并且任何字符都被推回通过ungetc()或ungetwc()进行到流上的流不会随后从流中读取(不进一步更改文件偏移量)。
请注意,终端无法搜索。
- 4 回答
- 0 关注
- 684 浏览
添加回答
举报
0/150
提交
取消