我一直试图通过“BRIAN W KERNIGHAN& DENNIS M. RITCHIE的C编程语言”学习一些C语言,我有一个我无法理解的问题。
以下是与输入字符计数相关的第1.5节(第17页)中的交易,这是我的代码:
#include <stdio.h>
int main()
{
double nc;
for (nc = 0; getchar() != EOF; ++nc);
printf("%0.f\n", nc);
}
这部分:
printf("%0.f\n", nc);
应该打印实际的字符计数器,对吗?问题是它完全没有给我任何东西。我一直在通过代码块尝试它,也通过终端通过“cc code.c”来尝试它,所有它只是等待我输入和输入,而不是更多。
我在这里错过了什么吗?
提前致谢,
Anoubis
答案 0 :(得分:2)
如果您只输入随机文字输入,那么您将被困在getchar() != EOF
。
该程序等待EOF
- End Of File
我将您的代码复制到a.c
并使用gcc a.c -o a.out
如果运行./a.out
我得到了您描述的行为,直到我点击了与我的终端中Ctrl+D
对应的EOF
。
程序将在收到字符EOF
后打印收到的字符数。
使用该代码的另一种方法是将另一个文件传送给它。
创建一个名为blaha.txt
的虚拟文件并在其中写入内容。
然后你可以将它传递给程序,如下所示:
a.out < blaha.txt
答案 1 :(得分:1)
您的程序等待输入并使用它直到它到达文件末尾。您可以在Windows上键入control-Z
后跟enter
,在Linux和MacOS上输入control-D
等特殊字符,从终端发出文件结束信号。