如何解决在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或其他一些整型数据类型。您不太可能读到字符的¾!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。