gpt4 book ai didi

c - 这个程序如何停止接受输入?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:45:32 25 4
gpt4 key购买 nike

我正在编写 C 源代码并获取输入

 while(!feof(stdin)){
fscanf(stdin, "%d ...

我不明白的是,您如何让它停止接受输入并处理输入? Ctr+Z 只是终止了整个过程,我尝试在没有输入的情况下按 enter 键,但它不起作用。

最佳答案

EOF(通常是一个值为 -1 的 define)指示符在 Linux 上将匹配文本文件的 CTRL+D(ASCII 代码 4) .它足够通用,可以用于二进制文件和文本文件,也可以用于不同的环境(例如,对于 DOS/Windows 上的文本文件,它将匹配 CTRL+Z)。

在您的情况下,当用户键入 CTRL+D 作为输入时,循环将退出,因为输入流将到达其末尾(然后 feof() 将返回非零值)。

要查看此方法的缺点 (not so obvious behavior),只需尝试自己输入一些文本,然后 printf 将其输出(使用各种输入,在一行的开头或中间终止)。另见 this post有关更多详细信息。

更好(最不令人惊讶)的实现可能会避免 fscanf 并依赖于 fgets 返回值(例如)。将其行为与此进行比较:

char buffer[80];
while (fgets(buffer, sizeof(buffer), stdin) != NULL) {
// ...
}

关于c - 这个程序如何停止接受输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20240298/

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