“C编程语言”的基本示例代码不能像预期的那样工作吗?

时间:2011-11-29 17:46:59

标签: c eof kernighan-and-ritchie

我是一位经验丰富的Java开发人员,在我的计算机科学研究中学习C语言存在很多问题。我尝试了许多人似乎推荐的“C编程语言”一书。

但是我遇到了像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循环永远不会结束!它只是在输入结束后等待另一个输入......

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

2 个答案:

答案 0 :(得分:4)

  

总是过多计算一个角色

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

  

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

您可能没有发出输入结束信号。您应该使用CTRL-D来执行此操作。

答案 1 :(得分:0)

键入字符(例如“6”)并单击enter(等于\ n)时,将发送命令“6 \ n”,因此它是2个字符。如果你只按Enter键,那么'i'将增加1。

EOF表示文件结尾,相当于ctrld + D.如果您阅读文本文件,它会很有用。否则它就像说“永远”一样。