gpt4 book ai didi

c - 以 EOF 结尾的 fgets 循环会跳过下一个 fgets

转载 作者:行者123 更新时间:2023-11-30 14:37:03 42 4
gpt4 key购买 nike

我试图在完成未定义数量的另一个输入后获取用户输入。但问题是 while 循环之后的第二个 fgets 永远不会被调用。我用 EOF 结束循环,也许这就是错误。但我不知道应该如何结束循环。

另一个有趣的事情是:这是我的 C 编码课上的一个任务,讲师有一个她的解决方案的视频,如果我 1:1 复制她的代码,它也不起作用。它还会跳过第二个 fgets 调用。

我已经将代码削减到绝对最低限度以获取错误,但正如您所看到的:几行代码却不起作用。我什至尝试用 GDB 调试它,但我不知道如何让它像视频中那样运行。

#include <stdio.h>
int main() {
char input[80];
while (fgets(input, 80, stdin) != NULL) {
// nop
}
fgets(input, 80, stdin);
printf("%s\n", input);
return 0;
}

最佳答案

当你第一次在 mac 中按 ctrl+d = EOF 时(我猜在 Windows 上也是一样),你必须退出 while 循环。

当您再次按下它时,循环后的 fgets 就会工作并打印最后一行。

对不起我的英语:)

关于c - 以 EOF 结尾的 fgets 循环会跳过下一个 fgets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57648464/

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