在C中计算字符代码

时间:2011-05-25 00:13:57

标签: c

好的我只是在学习C并偶然发现这个练习代码来计算角色K& R的书:

#include <stdio.h>
/* count characters in input; 2nd version */
main()
{
    double nc;
    for (nc = 0; getchar() != EOF; ++nc)
        ;
    printf("%.0f\n", nc);
}

问题是我不知道当我输入任何字符时是否打印字符数量是因为没有任何输出,只有空格(getchar()等待另一个输入)。 / p>

有人可以向我解释发生了什么事吗?我在openSUSE 11.3中使用vim练习bash。

3 个答案:

答案 0 :(得分:5)

您必须将EOF信号/字符发送到该程序。如果从终端窗口中运行它,请按 Ctrl + D

如果你是从文件管道,如下:

./my_program < input_file_name

然后它会自动运行。

答案 1 :(得分:1)

由于正在检查EOF,请点击终端中的Ctrl-D

答案 2 :(得分:0)

正如其他人提到的那样,你必须按 control - d (又名^d),但只有在你点击返回后才能 。换句话说,你不能输入“foo control - d ”并期望它能够正常工作。 “foo return control - d ”会起作用。

另请注意,K&amp; R是一本很好的书,但几十年前写的。计数算法仅适用于ASCII-ish输入。宽字符(UTF-8等)将无法正确计算。

另请注意,您引用的示例是使用浮点数进行此计数。这没有什么严格的错误,但是对于速度和效率,大多数人会使用无符号整数,长整数或其他一些整数数据类型。你不太可能阅读一个角色的第2个!