这个代码我是照着c程序设计语言一书中1.5.2章的代码敲的,目的是字符计数
#include
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;/*此处提行后没有自动空格,我自己用空格敲出来的,不空格这里也是一样的*/
printf("%ld\n",nc);
}
运行后输入字符或者数字回车后,没有计数,没有任何输出的结果
用1.5.2章后边的for语句敲出来却可以运行
求问是哪里出了问题,还是书上的也是错的,如何改动才能使程序完整运行
找到问题了,是我while语句后没打{} 我用的是devc++可能和各位大佬的不一样,但是还是谢谢大佬们的热心回复!
getchar() != EOF
改为
getchar() != '\n'
EOF是文件结束符,你键盘敲进去的内容里不可能有EOF的,只有从文件读取的时候才可能有EOF
这就好比'\0'是字符串结束符,但是你单拿出一个字符串来会发现里面哪个字符也不是'\0'
要输入EOF才能跳出你这个while循环,你可以输入组合键CTRL+Z,即可输入EOF结束循环了。
如果换行就想结束,那么应该将getchar()的结果与'\n'换行符进行比较
循环得有个结束条件啊,你这样只有出错才有可能终止循环啊。
#include<stdio.h>
main()
{
long nc;
nc = 0;
int c;
while ((c = getchar()) != EOF && c != '\n' )
++nc;
printf("%ld\n", nc);
}