2012-04-28 54 views
1

对不起,提出这样一个简单的问题,我仍然在学习C并首先学习基础知识。字符计数程序不输出任何东西?

我正在创建一个字符计数程序,但是当我执行程序并尝试输入“h”作为例子,然后按回车时出现一个新行并且没有任何内容输出到该行上?

代码:

#include <stdio.h> 

/* Copy input and count characters 2nd version */ 

main() { 
    double cc; 
    for(cc = 0; getchar() != EOF; ++cc); 
    printf("%.0f\n", cc); 
} 

回答

5

一旦完成输入字符,必须按Ctrl-D到信号输入流的结束。否则你的程序将继续等待更多的输入。

P.S.为什么你使用double变量作为柜台?整数类型会更合适。

+0

是不是两次浮动的长度?我只是觉得用它会更好。 – TheBlueCat 2012-04-28 18:12:49

+0

@TheBlueCat:由于'cc'只是一个计数器,我认为它的类型的最佳默认选择是'int'。 – NPE 2012-04-28 18:35:03

0

也许(我不确定你想要什么)你有一个额外的;for(),这意味着一个空的陈述。所以你的程序会运行空语句(换句话说,什么都不做)直到输入结束(如果输入是终端,你可能需要一个CTRL+D),然后打印(一次)字符数。

如果您希望您的程序在输入中的每个字符后打印计数器,请删除该;,以便printf将在循环中。

+0

根据我读的这本书的“空声明” – TheBlueCat 2012-04-28 18:12:24

+0

那么,我不知道你到底想要什么。如果你想使用空循环(并且只在输入结束时打印),aix的答案是非常好的。 – asaelr 2012-04-28 18:23:22

-2

包含此行的最后,你会得到输出:

return 0;