为了账号安全,请及时绑定邮箱和手机立即绑定

使用fflush(stdin)

使用fflush(stdin)

Smart猫小萌 2019-05-24 13:55:58
使用fflush(stdin)因此,谷歌快速搜索fflush(stdin)清除输入缓冲区会发现许多网站警告不要使用它。然而,这正是我的CS教授教授课程的原因。使用有多糟糕fflush(stdin)?即使我的教授正在使用它并且似乎完美无缺地工作,我是否真的应该放弃使用它?
查看完整描述

4 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

简单:这是未定义的行为,因为fflush它意味着在输出流上调用。这是C标准的摘录:

int fflush(FILE * ostream);

ostream指向输入流或未输入最近操作的更新流,fflush函数导致该流的任何未写入数据被传递到主机环境以写入文件; 否则,行为未定义。

所以这不是一个“多么糟糕”的问题。显然fflush(stdin)错的,你永远不能使用它


查看完整回答
反对 回复 2019-05-24
?
忽然笑

TA贡献1806条经验 获得超5个赞

根据标准,fflush只能用于输出缓冲区,显然stdin不是一个。但是,一些编译器提供了fflush(stdin)作为扩展的用法。在这种情况下,您可以使用它,但它会影响可移植性,因此您将无法再在地球上使用任何符合标准的编译器并期望获得相同的结果。


查看完整回答
反对 回复 2019-05-24
?
函数式编程

TA贡献1807条经验 获得超9个赞

对于打开读取的流,如果文件尚未处于EOF,并且文件是能够搜索的文件,则底层打开文件描述的文件偏移量应设置为流的文件位置,并且任何字符都被推回通过ungetc()或ungetwc()进行到流上的流不会随后从流中读取(不进一步更改文件偏移量)。

请注意,终端无法搜索。


查看完整回答
反对 回复 2019-05-24
  • 4 回答
  • 0 关注
  • 684 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信