我开始学习C编程语言"书中的一个代码对我不起作用。此代码假设使用getchar()
计算字符数。
这是我的代码:
#include <stdio.h>
int main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
return 0;
}
我尝试运行它并写一些字符但是当我按下ENTER
时,它只会启动一个新行。它永远不会离开循环。
答案 0 :(得分:2)
换行符不是EOF
。您会混淆EOF
和EOL
。
当您按ENTER
,getchar()
收到换行符\n
时,您的程序会像其他任何字符一样计算。
尝试按CTRL
+ D
(Linux终端)或CTRL
+ Z
(Windows终端)将空输入发送到您的程序,从而结束它。
您也可以将输入写入文件,并将此文件作为输入提供给您的程序,如下所示:
./your_program < your_file
当您的输入来自文件时,EOF
会在到达文件末尾时自动发送到您的程序。那是因为从文件中获取的输出不多。