| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 757 人关注过本帖
标题:一点小问题
只看楼主 加入收藏
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:0 
#include <stdio.h>
#include <conio.h>
main()
{
    int c;

    while(c = getchar()!= EOF)
        printf("%d\n",c);
    printf("%d - at EOF\n",c);

}
对于表达式:c = getchar()!= EOF,其执行过程是:
先进行getchar() != EOF的判断,
然后再将比较的结果(0或者1)赋值给c
那么对于正常的输入,getchar()将返回所输入的字符的ASCII码值,这个值是不会等于EOF的。
此时,getchar() != EOF的比较结果是真(1)。
但是,getchar()只有在接受到回车时才会终止从键盘接受数据的状态(终止getchar()函数本身),所以,楼主看到的现象是:敲了很多字符,但没见输出!当敲回车了,会一次输出很多1,而且1的个数和前面输入的字符数量一致。

EOF就是-1!也就是说,楼主可以把程序中的EOF改成-1.
直到楼主敲:Ctrl+z,并且再敲回车,这才会结束程序。
接受现实吧!
应该说,从这个例题,楼主可以学习到getchar()函数的工作特性。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-20 21:56
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:0 
以下是引用A13433758072在2011-2-20 11:23:06的发言:

你出来害人是不对地,EOF是啥?文件结尾!EOF是在stdio.h标准库里声明的宏,当getchar()读取到文件结尾时就返回一个负数,不同操作系统返回不同值,但共同点就是负数,Linux在stdio.h里宏就是-1,  while((c = getchar())!= EOF)你把,读取的字符赋值给字符变量,请问这里的字符是unsiged 还是siged字符,就算是unsiged也不一定正确的(……省略不说)
就我目前看到的C编译环境:TC、VC、BC、Linux C,EOF是这样定义的:

#define EOF     (-1)
(以上截取于stdio.h)
EOF的英文意义是Ending Of File不假,但对文件结尾的判断,最好还是用feof()函数(上述版本的C环境都有这样的库函数,或者稍加变形)
这是在强调:文件结尾就返回一个负数,这个说法是不正确的。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-20 22:03
快速回复:一点小问题
数据加载中...
 
   



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

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