| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 607 人关注过本帖
标题:getchar()与EOF的疑问。
只看楼主 加入收藏
lycpp
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-28
结帖率:100%
收藏
 问题点数:0 回复次数:0 
getchar()与EOF的疑问。
最近从头开始看c程序设计语言,学到getchar和EOF这就不太明白了。书中有两段小程序。
程序代码:
#include<stdio.h>
void main()
{

 int c;

 c=getchar();

 while(c!=EOF)
  {
   putchar(c);
   c=getchar();
  }
}

这个程序的功能是复制键盘上的输入,没有任何问题。
程序代码:
#include<stdio.h>
void main()
{
    long nc;
    nc=0;
    while(getchar()!=EOF)
        ++nc;
    printf("%ld\n",nc);
}

这个程序是统计键盘输入的个数,但是我不太明白。运行程序,例如输入“ly”敲回车,没有反应,输入“ly^Z(ctrl+Z,据说是输入EOF)”没有反应,输入“ly^Z”敲一下回车再输入“^Z”再敲一下回车,这时候才有输出“3”。
当我把第二段程序中“getchar()!=EOF”改成“getchar()!=10”的时候输入“ly”敲一下回车,输出“2”。这样反而是我想要程序,这到底是怎么回事?
第一个程序正常说明在没有输入时getchar会返回EOF,但是第二个程序明明已经没有输入了却不能跳出循环,输入ctrl+z给它EOF也没用,必须要EOF+回车才能跳出循环,而且似乎回车也占了计数(我用的是vs2010)。往各位大侠解惑!
搜索更多相关主题的帖子: 从头开始 
2011-01-29 00:51
快速回复:getchar()与EOF的疑问。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034453 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved