【发布时间】:2016-04-05 13:41:06
【问题描述】:
我想知道如何检查我的输入缓冲区(可能称为stdin)是否为空。
如果缓冲区为空,我不希望程序停止,并且我不希望输入一定以\n 结尾,因此仅使用scanf 是不够的。
我尝试在谷歌和这个网站上搜索,但没有足够的答案。
我尝试像这样使用feof(stdin):
int main()
{
char c,x;
int num;
scanf("%c",&c);
scanf("%c",&x);
num=feof(stdin);
printf("%d",num);
}
但无论输入如何,它所做的只是打印 0。在第二个 scanf 之后添加 fflush(stdin) 给出了相同的结果。
其他答案建议使用 select 和 poll,但我找不到这些功能的任何解释。
其他一些论坛告诉我使用getchar(),但我认为他们误解了我的问题。
如果您建议我使用 select/poll,您能否添加有关如何使用它们的说明?
【问题讨论】:
-
查看如何在 SO 上提问。这里没有代码...
-
从专用线程中的输入读取。
-
'我尝试在 google 和这个网站上搜索,但没有足够的答案' - 请告诉我们您使用的 seach 字符串,以及为什么返回的链接不够。
-
这不是教程网站。
-
'能否请您添加一个关于如何使用这些的解释'和'这是一个一般性问题,它不适用于特定代码'是相互排斥的。