我刚学c,用的是Dennis M.Ritchie和Brian W.Kernighan合著的《The c programming languagel》,学到字符计数那里就不队了,那代码运行却没结果,希望各位高手能帮帮我,其代码是
#include "stdio.h"
main()
{
double nc;
for(nc=0;getchar()!=EOF;++nc)
;
printf("%.0f\n",nc);
}
我在vc6.0和tc下运行后总没结果输出,我发现去掉for后那分号能一行一行输出结果,当为什么一次输出总的字符计数却不行呢?书上接下来的几个计数程序都存在这样的问题。希望大家帮帮我!!!
----------------解决方案--------------------------------------------------------
我刚学c,用的是Dennis M.Ritchie和Brian W.Kernighan合著的《The c programming languagel》,学到字符计数那里就不队了,那代码运行却没结果,希望各位高手能帮帮我,其代码是
#include "stdio.h"
main()
{
double nc;
for(nc=0;getchar()!=EOF;++nc)//结束不了,用文件输入试试,或者改为getchar()!='\n'
;
printf("%.0f\n",nc);
}
我在vc6.0和tc下运行后总没结果输出,我发现去掉for后那分号能一行一行输出结果,当为什么一次输出总的字符计数却不行呢?书上接下来的几个计数程序都存在这样的问题。希望大家帮帮我!!!
----------------解决方案--------------------------------------------------------
getchar()!='\n';//估计也不行吧
问题应该是缓冲区的缘故 每次应该清空吧
----------------解决方案--------------------------------------------------------
怎么不可以.,楼主应该是输入许多个字符,然后把所有字符的个数输出,用我这个可以的,我测试过了.
----------------解决方案--------------------------------------------------------
用nuciewth的方法是可以的,我用EOF尝试,好像得用两次,即:”ctrl+z“后回车,然后再”ctrl+z“后回车,才能出结果。不知道怎么回事。EOF应该是”ctrl+z“吧,我是在vc6中运行的。
----------------解决方案--------------------------------------------------------
嗯 这样是可以的 偶理解错了
[此贴子已经被作者于2006-10-22 12:05:32编辑过]
----------------解决方案--------------------------------------------------------
abcdef回车
^Z
----------------解决方案--------------------------------------------------------
abcdef回车
^Z
这样的话计数时就把回车也算在内了。
----------------解决方案--------------------------------------------------------
abcdef回车
^Z
这样的话计数时就把回车也算在内了。
如果不要把回车计算进去的话,那就在行末尾输入^Z作为行结束符,最后另起一行输入^Z作为整个文件结束符。
----------------解决方案--------------------------------------------------------
把回车算进去没什么不对的啊!
如果你不想算回车就根本没必要这么写了
----------------解决方案--------------------------------------------------------