| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 868 人关注过本帖
标题:一段子程序求解释啊 (never give up)
只看楼主 加入收藏
GUnever
Rank: 2
等 级:论坛游民
帖 子:59
专家分:25
注 册:2012-3-3
收藏
得分:0 
回复 9楼 TonyDeng
EOF相当于文件的结束标志 值为-1也就是说当检测到最后的—1的时候 结束了循环 但是书上的解释是 可以丢弃了-1这个值 到底怎么丢弃的?
2012-03-05 13:32
GUnever
Rank: 2
等 级:论坛游民
帖 子:59
专家分:25
注 册:2012-3-3
收藏
得分:0 
回复 9楼 TonyDeng
EOF是文件的结束标志 为-1  接就是说当检测到最后输入的-1这个值的时候就停止循环 但是书上还说这种方法能剔除当前输入行的最后一个字符  怎么理解?
2012-03-05 13:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
getchar()是读数据出错时返回EOF(通常值为-1,但不是所有编译器都设置EOF=-1),正常的char应是unsigned char的,但getchar()是返回signed int的,设置EOF为负值只是希望指出读到了不可能出现的值,那么这个值必定是错误的。读到ch=EOF没有问题,你没有使用它,比如没有令x = ch,那么这个ch数据就丢弃了。

授人以渔,不授人以鱼。
2012-03-05 13:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你这个书的解释也有点怪,如果在进入while()循环之前,输入缓冲区是没有数据的,那么程序就会因为getchar()而等待按键,看起来就像死循环。如果输入缓冲区中有数据,那么这个循环就会一直读下去,直到读到'\n'为止,这期间读到的所有东西都因为没有赋值操作而被丢弃——如果缓冲区后面还有数据,那么留给下一个getchar()读取。

到循环结束,ch是有值的,但你的代码不使用它,那么它也被丢弃。关键是你到底用它了没有!


[ 本帖最后由 TonyDeng 于 2012-3-5 13:56 编辑 ]

授人以渔,不授人以鱼。
2012-03-05 13:44
chan_
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:84
专家分:122
注 册:2012-2-29
收藏
得分:0 
理解中
2012-03-06 21:28
快速回复:一段子程序求解释啊 (never give up)
数据加载中...
 
   



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

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