1

我是一名中等经验的 Java 开发人员,在学习计算机科学的 C 语言时遇到了很多问题。我尝试使用许多人似乎推荐的“The C Programming Language”一书。

但是我遇到了最简单的问题,比如 EOF 与 getchar() 的结合。这是代码:

#include<stdio.h>
main()
{
    int i = 0;
    while (getchar() != EOF)
    {
        ++i;
        printf("Count of characters is %d", i);
    }
}

我正在使用 Mac OS X Lion 并使用带有“./a.out”的“cc”命令在终端中运行,就像书中描述的那样运行文件。我得到的是:

  • 总是计算一个字符太多
  • while 循环永远不会结束!它只是在到达输入结束后等待另一个输入...

我真的不知道可能是什么问题。有人可以帮忙吗?

4

2 回答 2

4

总是计算一个字符太多

那可能是换行符(输入/返回)。

while 循环永远不会结束!它只是在到达输入结束后等待另一个输入

您可能没有发出输入结束的信号。你应该CTRL-D这样做。

于 2011-11-29T17:50:31.377 回答
0

当你输入一个字符,比如“6”,然后点击回车(等于\n),就会发送命令“6\n”,所以是2个字符。如果你只是按回车,那么'i'会加1。

EOF 表示文件结束,相当于 ctrld+D。如果您阅读文本文件,这很有用。否则与“永远”相同。

于 2011-11-29T17:55:37.740 回答