是stdin缓冲区空C

时间:2014-01-10 12:10:35

标签: c buffer stdin fgets

我想编写一个函数来告诉我stdin缓冲区是否为空。 所以,这是代码:

int buff_empty()
{
    char buffer[3];
    fgets(buffer, 3, stdin);
    if(strlen(buffer) > 1) return 0;
    return 1;
}

但问题是 - 我不希望fgets()等待我的输入。我正在使用我自己的函数来读取,例如,一个整数,然后检查这个func是否为缓冲区空(不止是一个数字)。

函数效果很好,但是当我读取一个数字(读取函数只读取空格,就像scanf())时,它会等待一个分界线(Enter?)。有什么办法可以解决吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

部分问题在于你有点要求程序读懂你的想法。当它从输入中读取(或尝试读取)时,那里没有任何内容,它如何区分没有更多输入和尚未输入的输入?

正常的解决方案是将输入放入单独的文件中,并查找文件结尾以告知何时没有更多输入。因此,当程序尝试读取下一个数字时,它会到达文件末尾并知道没有任何输入。

尝试阅读feof()函数或fgets()的可能返回值。