在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()
在等待另一个输入)。 有人可以向我解释发生了什么吗?我正在openSUSE 11.3中使用vim在bash中进行练习。     

解决方法

您必须将“ 2”信号/字符发送到程序。如果从终端窗口中运行它,请按Ctrl + D。 如果要从文件管道传输,则如下所示:
./my_program < input_file_name
那么它将自动工作。     ,由于正在检查
EOF
,请在终端中按
Ctrl-D
。     ,正如其他人提到的那样,您必须按Ctrl-d(又名
^d
),但这仅在您按下return键后才起作用。换句话说,您不能键入\“ foocontrol-d \”并期望它起作用。 \“ fooreturncontrol-d \”将起作用。 还请注意,K&R是一本精美的书,但它是几十年前写的。提出的计数算法仅适用于ASCII码输入。宽字符(UTF-8等)将无法正确计数。 还要注意,您引用的示例使用浮点数进行此计数。这几乎没有什么错,但是为了提高速度和效率,大多数人会使用无符号的int,long或其他一些整型数据类型。您不太可能读到字符的¾!