2012-01-18 86 views
2

我刚刚开始学习C,这可能是一个非常简单的问题,但你的帮助是非常感激的。我试图用这个代码来计算输入到控制台的字符数量,但是当我点击输入时,它只是给我一个空白的新行,就像printf还没有工作。我哪里错了?控制台上没有输出

int c, number; 
while((c = getchar()) != EOF){ 
++number; 
} 
printf("%d\n", number); 

谢谢。

回答

6

当你敲回车时,程序会增加计数器,因为它会得到换行符,并等待更多输入。你必须养活程序的EOF与按Ctrl +d(LINUX,UNIX,Mac)或按Ctrl +ž输入(Windows)中。

+0

非常好,非常感谢! – 2012-01-18 15:48:42

0

如果你在windows下,按Ctrl + Z然后输入。如果在linux下,按Ctrl + D。这将导致文件结束。

0

enter是不是一个控制台它是EOF或者按Ctrl-Z(Windows)或按Ctrl-d(UNIX)

1
  1. 输入不作为EOF已经通过其他的答案指出。
  2. 输入EOF后,您将得到错误的结果,因为您尚未初始化number。你正在增加垃圾值。将其初始化为零。

    int c, number = 0;

  3. 这样换行也将被计算在内。如果你想跳过它们,那么你需要在增加number之前测试c不等于'\n'

+0

+1为初始化数字,我想知道为什么我得到一个非常奇怪的字符数:)谢谢 – 2012-01-18 16:01:49