我想编写一个函数来告诉我stdin缓冲区是否为空。 所以,这是代码:
int buff_empty()
{
char buffer[3];
fgets(buffer, 3, stdin);
if(strlen(buffer) > 1) return 0;
return 1;
}
但问题是 - 我不希望fgets()等待我的输入。我正在使用我自己的函数来读取,例如,一个整数,然后检查这个func是否为缓冲区空(不止是一个数字)。
函数效果很好,但是当我读取一个数字(读取函数只读取空格,就像scanf())时,它会等待一个分界线(Enter?)。有什么办法可以解决吗?
提前致谢!
答案 0 :(得分:0)
部分问题在于你有点要求程序读懂你的想法。当它从输入中读取(或尝试读取)时,那里没有任何内容,它如何区分没有更多输入和尚未输入的输入?
正常的解决方案是将输入放入单独的文件中,并查找文件结尾以告知何时没有更多输入。因此,当程序尝试读取下一个数字时,它会到达文件末尾并知道没有任何输入。
尝试阅读feof()函数或fgets()的可能返回值。