【发布时间】:2011-06-08 10:29:57
【问题描述】:
我有以下代码,
fflush(stdin);
print("Enter y/n");
scanf("%c",&a);
在这里,它在给出输入之前就退出了。看起来问题是因为它没有刷新可能有一些垃圾字符的输入缓冲区。flush(stdin)有什么替代方法。这个代码sn- p 在 Solaris 中运行,但在 Linux 中不运行。
【问题讨论】:
-
man fflush的第一行内容如下:函数fflush()强制写入给定输出或更新的所有用户空间缓冲数据 流。 cnicutar 对于如何跳过不需要的输入有正确的答案,但除此之外,您应该阅读您正在使用的函数的文档。 并且检查它们的返回值...因为您上面的调用将返回EOF并设置errno = EBADF以表明您对该函数的错误使用。忽略返回值是不好的,不好的,不好的......
标签: c