无法获得实际计数,但我没有看到我做错了什么。
我输入一个单词,点击输入,然后没有任何反应,它一直在运行。
int main(void)
{
double nc;
for (nc = 0; getchar() != EOF; ++nc)
;
printf ("%.0f\n", nc);
}
答案 0 :(得分:3)
从交互式控制台输入读取时,getchar()
不会仅仅因为用户停止输入或按返回而返回EOF
,如果有必要,它将等待用户在键盘上输入新内容。因此,for循环不会终止。
您必须使用特殊的组合键(取决于所使用的操作系统)来发出文件结束信号或检查一些其他输入以终止循环(例如,行尾)
答案 1 :(得分:1)
如上所述,在输入^ 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);
}