我试图在完成未定义数量的另一个输入后获取用户输入。但问题是 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/