C,while循环不断重复

时间:2014-03-07 00:56:37

标签: c

所以我根据The C Programming Language一本书构建了一个非常基本的程序,但是当我运行它时,它在我输入一个后不断询问输入,当没有输入更长时,循环应该结束了吗?还是我错了?为我糟糕的英语而苦恼

int main()
{
    long nc;
    nc = 0;

    while ( getchar() != EOF) {
    ++nc;
    }
    printf("%ld\n", nc);
}

4 个答案:

答案 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