| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 925 人关注过本帖
标题:此段代码有些混乱,求指点。。
取消只看楼主 加入收藏
bits
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-5-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
此段代码有些混乱,求指点。。
char ch;
.......
while((ch=getchar())!=EOF)

一直以为,我输入的字符存储到ch中,结果今天才知道是getchar()的返回值存储在ch中并与EOF进行判断。

但是我搞不明白如果我在while循环里加入printf("ch is %c",ch); 发现我输入的字符还是保存在ch中。

这太令我矛盾了,希望各位指点一下。
搜索更多相关主题的帖子: 矛盾 
2013-05-15 16:06
bits
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-5-14
收藏
得分:0 
回复 3楼 Ryker
关键是我现在不清楚ch里是什么内容在和EOF进行比较。 ,是用户输入的字符 还是getchar()的返回值? 还是我一开始就理解错了。。

以下摘自《C和指针》第五章 P70 最后一段:

-----------------------------------------------------------------------------------------------------------------------------------------------------------
    EOF需要的位数比字符型值所能提供的位数要多,这也是getchar返回一个整型值而不是字符型值得原因,然而,把getchar的返回值首先存储于ch中将导致它被截短。然后这个被截断的值被提升为整型并与EOF进行比较。当这段存在错误的代码在使用有符号字符集的机器上运行时,如果读取了一个值为\337的字节时,循环将会终止,因为这个值截断在提升之后与EOF相等。当这段代码在使用无符号字符集的机器上运行时,这个循环将永远不会停止。
-----------------------------------------------------------------------------------------------------------------------------------------------------------

这一段最后一句话也不理解

---------------The Art of program ---------------
2013-05-15 17:57
bits
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-5-14
收藏
得分:0 
回复 5楼 笑傲
哦对谢谢,真是蒙了。。。这都要问。。。。。

---------------The Art of program ---------------
2013-05-15 20:21
bits
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-5-14
收藏
得分:0 
有木有大神顺便帮忙看看这个。。
float a=0;
while(scanf("%f",&a)==0)
    printf("error");
如果用户输入了非浮点数。会提示error。。  加入我在标准输入流键入了 C然后'\n' 。为什么就无限循环了。。我认为应该循环两次,输入流就没东西了,可是结果差强人意哦。。

---------------The Art of program ---------------
2013-05-15 20:24
bits
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-5-14
收藏
得分:0 
回复 8楼 笑傲
明白了谢谢

---------------The Art of program ---------------
2013-05-16 08:12
bits
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-5-14
收藏
得分:0 
回复 10楼 Ryker
恩应该就是缓冲区'\n'的问题,用scanf每次都读不了'\n',但是程序知道缓冲区还有内容,所以才死循环的吧?

---------------The Art of program ---------------
2013-05-16 09:44
快速回复:此段代码有些混乱,求指点。。
数据加载中...
 
   



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

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