Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Getchar()无限循环_C_Input_Eof_Getchar - Fatal编程技术网

Getchar()无限循环

Getchar()无限循环,c,input,eof,getchar,C,Input,Eof,Getchar,我开始学习“C编程语言”,书中的一段代码对我不适用。此代码假设使用getchar()计算字符数 这是我的密码: #include <stdio.h> int main() { long nc; nc = 0; while (getchar() != EOF) ++nc; printf("%1d\n", nc); return 0; } #包括 int main() { 长nc; nc=0; while(getchar()!=EOF) ++数

我开始学习“C编程语言”,书中的一段代码对我不适用。此代码假设使用
getchar()
计算字符数

这是我的密码:

#include <stdio.h>

int main()
{
  long nc;

  nc = 0;
  while (getchar() != EOF)
        ++nc;
  printf("%1d\n", nc);

  return 0;
}
#包括
int main()
{
长nc;
nc=0;
while(getchar()!=EOF)
++数控;
printf(“%1d\n”,nc);
返回0;
}

我尝试运行它并写入一些字符,但当我按ENTER键时,它只会开始一个新行。这就好像它永远不会脱离循环。

换行符不是
EOF
。您混淆了
EOF
EOL

当您按ENTER键时,
getchar()
会收到一个换行符:
\n
,您的程序会像其他字符一样对其进行计数

尝试按
CTRL
+
D
(Linux终端)或
CTRL
+
Z
(Windows终端)向程序发送空输入,从而结束程序

您还可以将输入写入文件,并将此文件作为输入提供给您的程序,如下所示:

./your_program < your_file
/your\u程序

当您的输入来自文件时,当到达文件末尾时,
EOF
会自动发送到您的程序。这是因为该文件没有更多的输出。

这真的是书中的代码吗<代码>getchar!=EOF
而非
getchar()!=EOF