因此,在谷歌上快速搜索fflush(stdin)
以清除输入缓冲区,会显示许多网站警告不要使用它.然而,这正是我的CS教授教给我们的班级如何做到这一点的.
使用fflush(stdin)
有多糟糕?我真的应该放弃使用它吗,即使我的教授正在使用它,而且它似乎工作完美无瑕?
因此,在谷歌上快速搜索fflush(stdin)
以清除输入缓冲区,会显示许多网站警告不要使用它.然而,这正是我的CS教授教给我们的班级如何做到这一点的.
使用fflush(stdin)
有多糟糕?我真的应该放弃使用它吗,即使我的教授正在使用它,而且它似乎工作完美无瑕?
简单:这是未定义的行为,因为fflush
意味着要在输出流上调用.这是C标准的摘录:
int-fflush(文件*ostream);
ostream指向输出流或 更新流,其中最重要的是 没有输入最近的操作, fflush函数会导致任何未写入的 要传递的该流的数据 要写入的主机环境 添加到文件中;否则,行为 是未定义的.
所以这不是"有多糟糕"的问题.fflush(stdin)
是不可移植的,所以如果您希望代码在编译器之间可移植,就不应该使用它.