gpt4 book ai didi

c - EOF 添加到计数器,不知道为什么

转载 作者:行者123 更新时间:2023-11-30 19:07:05 24 4
gpt4 key购买 nike

我一直试图理解为什么使用 ctrl-D 触发 eof 会在 for 循环中添加计数器。

这是我的代码:

#include <stdio.h>
int main()
{
double nc;
for (nc = 0; getchar() != EOF; nc++){
getchar();
}
printf("%.0f\n", nc);
return 0;
}

我的结果是:

0
1
2
3
4
5
6
7
8

8 是我在输入 7 后使用 ctrl-D 时得到的。触发 eof 是否有原因导致代码运行另一个完整循环?我认为空缓冲区不会返回任何内容。

最佳答案

这是您可能会错过的东西。获取您的代码片段:

for (nc = 0; getchar() != EOF; nc++)
getchar();

有两个getchar()。我们将它们称为 getchar1()getchar2()。您的输入应如下所示:

0\n
.
.
.
7\n
EOF

getchar1() 捕获数字序列和EOFgetchar2() 始终捕获换行符 ('\n')。并且您经过 for 循环体的次数为 8(0 到 7)。

希望对您有帮助。

关于c - EOF 添加到计数器,不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47177595/

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