C stdin缓冲区是空的吗

C stdin缓冲区是空的吗,c,buffer,stdin,fgets,C,Buffer,Stdin,Fgets,我想写一个函数,告诉我是否stdinbuffer是空的。 下面是代码: int buff_empty() { char buffer[3]; fgets(buffer, 3, stdin); if(strlen(buffer) > 1) return 0; return 1; } 但问题是-我不希望fgets()等待我的输入。我使用自己的函数来读取,例如,一个整数,然后用这个函数检查缓冲区是否为空(输入了多个数字) 函数工作得很好,但当我读取一个数字时(r

我想写一个函数,告诉我是否stdinbuffer是空的。 下面是代码:

int buff_empty()
{
    char buffer[3];
    fgets(buffer, 3, stdin);
    if(strlen(buffer) > 1) return 0;
    return 1;
}
但问题是-我不希望fgets()等待我的输入。我使用自己的函数来读取,例如,一个整数,然后用这个函数检查缓冲区是否为空(输入了多个数字)

函数工作得很好,但当我读取一个数字时(read函数只读取空白,就像scanf()),它会再等待一条特征线(Enter?)。有办法解决吗


提前谢谢

问题的一部分是你在要求程序读懂你的心思。当它从输入中读取(或尝试读取)时,那里什么都没有,它如何区分没有更多的输入和还没有输入的输入之间的区别

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


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

那么,有没有办法通过代码将特征线放入stdin?这也可以,因为fgets()等待我的输入。