【问题标题】:is stdin buffer empty C [duplicate]标准输入缓冲区是空的 C [重复]
【发布时间】:2014-01-10 12:10:35
【问题描述】:

我想写一个函数来告诉我标准输入缓冲区是否为空。 所以,这里是代码:

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

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

函数运行良好,但是当我读取一个数字时(读取函数只读取空白,就像 scanf()),它会等待一个断线(Enter?)。有什么办法解决吗?

提前致谢!

【问题讨论】:

  • 那么,有没有办法通过代码在标准输入中设置断线?这也可以,因为 fgets() 等待我的输入。

标签: c buffer stdin fgets


【解决方案1】:

问题的部分原因在于您是在要求程序读懂您的想法。当它从输入中读取(或尝试读取)时,那里什么都没有,它如何区分没有更多的输入和尚未输入的输入?

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    相关资源
    最近更新 更多