C中的基本字符计数
Basic character counting in C
无法获得实际计数,但我没有发现我做错了什么。
我输入一个词,按回车键,然后没有任何反应,它保持 运行。
int main(void)
{
double nc;
for (nc = 0; getchar() != EOF; ++nc)
;
printf ("%.0f\n", nc);
}
当从交互式控制台输入读取时,getchar()
不会 return EOF
仅仅因为用户停止输入或按下 return,它会在必要时等待用户在键盘上输入新内容。因此,for 循环不会终止。
您必须使用特殊的组合键(取决于所使用的操作系统)来发出文件结束信号或检查其他输入以终止循环(例如,行结束)
如前所述,在输入 ^D 之前,EOF 不会为真。终止它,但也要检查换行符。在这里检查这个较旧的问题以获得一些好的背景:
getchar() != EOF
这是使用整数编写并检查换行符或 EOF 的程序
// Customize AT_END Macro to return true based on some condition
#define AT_END(ch) (((ch)=='\n') || ((ch)==EOF))
int main(void)
{
int inpChar = getchar();
int nc = 0;
while (!AT_END(inpChar)) {
nc++;
inpChar = getchar();
};
printf("Number of chars=%d\n", nc);
}
无法获得实际计数,但我没有发现我做错了什么。
我输入一个词,按回车键,然后没有任何反应,它保持 运行。
int main(void)
{
double nc;
for (nc = 0; getchar() != EOF; ++nc)
;
printf ("%.0f\n", nc);
}
当从交互式控制台输入读取时,getchar()
不会 return EOF
仅仅因为用户停止输入或按下 return,它会在必要时等待用户在键盘上输入新内容。因此,for 循环不会终止。
您必须使用特殊的组合键(取决于所使用的操作系统)来发出文件结束信号或检查其他输入以终止循环(例如,行结束)
如前所述,在输入 ^D 之前,EOF 不会为真。终止它,但也要检查换行符。在这里检查这个较旧的问题以获得一些好的背景: getchar() != EOF
这是使用整数编写并检查换行符或 EOF 的程序
// Customize AT_END Macro to return true based on some condition
#define AT_END(ch) (((ch)=='\n') || ((ch)==EOF))
int main(void)
{
int inpChar = getchar();
int nc = 0;
while (!AT_END(inpChar)) {
nc++;
inpChar = getchar();
};
printf("Number of chars=%d\n", nc);
}