所以我根据The C Programming Language一本书构建了一个非常基本的程序,但是当我运行它时,它在我输入一个后不断询问输入,当没有输入更长时,循环应该结束了吗?还是我错了?为我糟糕的英语而苦恼
int main()
{
long nc;
nc = 0;
while ( getchar() != EOF) {
++nc;
}
printf("%ld\n", nc);
}
答案 0 :(得分:2)
您的循环期望终止EOF字符,而不仅仅是空字符串。 * nix控制台通常在空行上翻译Ctrl-D
作为EOF,在Windows中我认为它是Ctrl-Z
但我可能是错的。
答案 1 :(得分:1)
没有
对于标准输入,您必须手动输入EOF。它是Windows中的Ctrl + Z和Linux中的Ctrl + D.
如果您使用Linux并从文件重定向标准输入。它会结束。
答案 2 :(得分:0)
这将继续读取输入,直到它到达文件结尾。如果您正在从终端读取(您没有重定向程序以从文件中读取),则只有在明确指定一个EOF时才会获得EOF。如何 依赖于您的操作系统,但在大多数类UNIX系统上,您可以通过点击 ctrl - D <生成显式eof / p>
答案 3 :(得分:0)
您可以按 Ctrl + D 输入EOF
,其他任何键盘都不能!因此,如果要中断循环,则必须输入EOF
。