gpt4 book ai didi

C|如何检查我的输入缓冲区(标准输入)是否为空?

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:13 30 4
gpt4 key购买 nike

我想知道如何检查我的输入缓冲区(可能称为 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,您能否添加有关如何使用它们的说明?

最佳答案

下面是解决这个问题的代码:

fseek (stdin, 0, SEEK_END);
num = ftell (stdin);

fseek 会将指针放在 stdin 输入缓冲区的末尾。 ftell 将返回文件的大小。

关于C|如何检查我的输入缓冲区(标准输入)是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36428098/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com