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