EOF 添加到计数器,不知道为什么
EOF adds to counter, no idea why
我一直试图理解为什么使用 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
导致代码 运行 另一个完整循环的原因?
我以为一个空的缓冲区将 return 什么都没有。
这里有一些你可能会错过的东西。拿一段你的代码:
for (nc = 0; getchar() != EOF; nc++)
getchar();
有两个getchar()
。我们称它们为 getchar1()
和 getchar2()
。您的输入应该是这样的:
0\n
.
.
.
7\n
EOF
getchar1()
捕捉数字序列和 EOF
。 getchar2()
始终捕获换行符 ('\n')。你通过 for 循环体的次数是 8(0 到 7)。
希望对您有所帮助。
我一直试图理解为什么使用 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
导致代码 运行 另一个完整循环的原因?
我以为一个空的缓冲区将 return 什么都没有。
这里有一些你可能会错过的东西。拿一段你的代码:
for (nc = 0; getchar() != EOF; nc++)
getchar();
有两个getchar()
。我们称它们为 getchar1()
和 getchar2()
。您的输入应该是这样的:
0\n
.
.
.
7\n
EOF
getchar1()
捕捉数字序列和 EOF
。 getchar2()
始终捕获换行符 ('\n')。你通过 for 循环体的次数是 8(0 到 7)。
希望对您有所帮助。