我一直在试图理解为什么使用 ctrl-D 触发eof
会增加for
循环中的计数器。
这是我的代码:
#include <stdio.h>
int main()
{
double nc;
for (nc = 0; getchar() != EOF; nc++){
getchar();
}
printf("%.0fn", nc);
return 0;
}
我的结果是:
0
1
2
3
4
5
6
7
8
8
是输入 ctrl-D 后使用 ctrl-D 时给我的7
。触发eof
会导致代码运行另一个完整循环的原因是什么?我以为空缓冲区不会返回任何内容。
这是您可能会错过的东西。获取您的代码片段:
for (nc = 0; getchar() != EOF; nc++)
getchar();
有两种getchar()
。让我们称呼他们,getchar1()
和getchar2()
.您的输入应如下所示:
0n
.
.
.
7n
EOF
getchar1()
捕获数字和EOF
的序列。 getchar2()
始终捕获换行符 ('')。循环体的计数是 8(0 到 7)。
希望对您有所帮助。