12.5 既然fflush()不能, 那么怎样才能清除输入呢?

这取决于你要做什么。

如果你希望丢掉调用scanf() (参见问题12.16 - 12.17)之后所剩下的换行符和未预知的输入, 你可能需要重写你的scanf() 或者换掉它,参见问题12.18。

或者你可以用下边这样的代码吃掉一行中多余的字符

while((c = getchar()) != ’\n’ && c != EOF)

/* 丢弃*/ ;

你也可以使用curses 的flushinp() 函数。

没有什么标准的办法可以丢弃标准输入流的未读取字符, 即使有, 那也不够,因为未读取字符也可能来自其它的操作系统级的输入缓冲区。

如果你希望严格丢弃多输入的字符(可能是预测发出临界提示), 你可能需要使用系统相关的技术; 参加问题19.1 和19.2。

永不止步步 发表于01-18 10:25 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号