gpt4 book ai didi

c - 如何在清除标准输入之前检查标准输入是否为空

转载 作者:行者123 更新时间:2023-11-30 14:38:00 25 4
gpt4 key购买 nike

我一直在使用代码

while (getchar() != '\n');

清除程序中stdin中的所有内容。然而,我有时会遇到一个小问题。有时,在我的程序中,当我调用 getchar() 时,stdin 中可能有也可能没有任何内容。当 stdin 中没有任何内容时,最终会调用 getchar() 并等待 stdin 中的内容>。然后我必须在键盘上输入\n,否则程序就会卡在这一行。我想知道是否有一种简单的方法可以在执行 while (getchar() != '\n'); 之前首先检查 stdin 是否为空,以避免这种情况有问题吗?

不确定编译器对答案是否重要,但我使用的是 Visual Studio 2017。编辑:当我说 stdin 时,我指的是键盘输入的字符

最佳答案

stdin 是一个流。如果进程正在从控制台读取,只要您不关闭流,该进程仍在从流中读取。在终端中,您可以通过点击 ^D 关闭输入流。

应用程序不是读心者。它无法知道流何时“完成”。如果要读取流中的数据并希望在流未完成之前关闭进程,则需要将流设置为非阻塞。阅读直到没有任何返回并且进程退出。

How do you do non-blocking console I/O on Linux in C?

关于c - 如何在清除标准输入之前检查标准输入是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56893045/

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