打印

C程序问题,求高手解答,不能跳出循环(回车 != EOF???)

[复制链接]
1435|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
C程序设计语言(第二版)书上的一个统计输入字符个数的例子.
版本1:
#include <stdio.h>

main()
{
        long nc=0;
        while (getchar() != EOF )
                ++nc;        
        printf("nc=%ld\n",nc);
        
}

版本2:
#include <stdio.h>

main()
{
        double nc;
        for (nc=0;getchar() != EOF;++nc)
                ;
        printf("nc=%.0f\n",nc);
        
}

两段程序作用相同,统计输入字符的个数.
但是我在输入一段字符之后,再按回车.没有反应.没有执行到printf语句.没有跳出循环.这是为何???
图:

相关帖子

沙发
dirtwillfly| | 2013-12-10 22:21 | 只看该作者
按ctrl+z可以强制结束循环。
在C标准函数库,档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。
你回车拉,换行啦什么的不会产生值为EOF的符号,所以一直循环~~

使用特权

评论回复
板凳
nnie2005|  楼主 | 2013-12-12 23:01 | 只看该作者
本帖最后由 nnie2005 于 2013-12-12 23:03 编辑
dirtwillfly 发表于 2013-12-10 22:21
按ctrl+z可以强制结束循环。
在C标准函数库,档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF  ...

多谢版主热心回答.现在了解了.分不够...哈哈.结贴结不了...

使用特权

评论回复
地板
dirtwillfly| | 2013-12-13 08:58 | 只看该作者
结贴和现在的分数没关系。
结贴方法:https://bbs.21ic.com/icview-442857-1-1.html

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

88

帖子

1

粉丝