3

我正在使用C 编程语言(K&R)学习 C。

因为我不想在文本编辑器和运行 gcc 之间来回切换,所以我决定使用 xcode 作为 IDE。到目前为止,在 1.5.2 节之前,我已经能够毫无问题地遵循本书的示例。

当给出有效的 (?) 程序时...

#include <stdio.h>

void main()
{
    long nc;

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

...我没有收到最终输出,告诉我输入中有多少个字符。我正在通过 xcode 控制台窗口输入我的输入。

经过一些调试,我的程序似乎陷入了 while 循环,并且从未遇到 EOF 令牌。为了适应这一点,我将换行符替换为新条件,通过替换EOFwith "\n",它也什么都不做,并给我一个 int 指针比较警告。

我在这里做错了什么?

我可以使用 xcode 关注 K&R 吗?

4

1 回答 1

11

键入^D(control-d) 以发送EOF.

如果要换行,则需要比较 to 的返回值,getchar'\n'不是"\n"。前者是char换行符的实际值;后者是指向具有该值的 char 的指针。如果这对您来说还没有意义,请不要担心,一旦您阅读了更多内容,它就会。

于 2010-01-23T00:27:32.620 回答