| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1067 人关注过本帖
标题:怎么这个程序只能输出1而不能输出0
只看楼主 加入收藏
回忆、想忘
Rank: 1
等 级:新手上路
帖 子:40
专家分:7
注 册:2010-12-24
结帖率:100%
收藏
 问题点数:0 回复次数:11 
怎么这个程序只能输出1而不能输出0
程序代码:
#include<stdio.h>
int main()
{
    char c;
    if((c=getchar())!=EOF)
       printf("1\n");
   else printf("0\n");
}
求教,各位老大!!!
2011-09-25 12:55
为我留住记忆
Rank: 4
来 自:北京
等 级:业余侠客
帖 子:130
专家分:226
注 册:2011-4-30
收藏
得分:0 
你怎么能这么比较呢 你得一个单独字符比较 不能一整个字符串比较

学习c是为了自己更强大。。。
2011-09-25 12:57
回忆、想忘
Rank: 1
等 级:新手上路
帖 子:40
专家分:7
注 册:2010-12-24
收藏
得分:0 
回复 2楼 为我留住记忆
EOF不是1吗?我是想判断getchar()!=EOF对不对?
2011-09-25 13:05
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
首先,EOF的值一般是-1,其次,EOF是系统返回的一个标志值,不是你敲进去的。想试也可以,按ctrl + z

重剑无锋,大巧不工
2011-09-25 13:30
回忆、想忘
Rank: 1
等 级:新手上路
帖 子:40
专家分:7
注 册:2010-12-24
收藏
得分:0 
回复 4楼 beyondyf
那要怎样才能验证表达式getchar()!=EOF的值是1还是0?
2011-09-25 14:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
学编程,要灵活一点。想知道EOF的值,要么查头文件(那是宏),要么用printf("%d", EOF)直接看值。如果要明确if的控制流程,就检测输入的是0或1,不用EOF。读书不能读死了。

授人以渔,不授人以鱼。
2011-09-25 14:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
接收诸如键盘(或流)输入之类,希望怎样作为结束标志,决定权在你,不在C。你完全可以不理会EOF,自己决定读到99结束,那么攻击者就不那么容易猜测你的程序规律,你也不会受制于EOF的规定。用getchar(),就可以有这种更大的灵活性,用scanf(),则它自己决定遇EOF结束,你控制不到它。用什么,是程序员作主,不是语言作主。

授人以渔,不授人以鱼。
2011-09-25 14:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
getchar()陷阱,随便一本C语言进阶书都会提到,它字面上是读char,但实际上是返回int,就是为了返回-1而设定的,因为在早期的ASCII码中,没有负数内码的字符(但现在汉字码全是负数),所以为了表示特殊的出错状态,必须设计一个不可能出现的码值作为返回,告诉调用者遇到特殊情况,所以设计了-1(但其实是任何负数都可以,只要不是正常字符就可以,故虽然多数编译器设计EOF为-1,但不是必然的,何况那不过是宏定义,随时可能被覆盖掉)。操作系统为了方便用户用键盘输入某些特殊控制码,就设置了一些特殊按键,比如在处理流设备时,遇到按键^Z则转码为-1之类,可见这很明显是可移植性极弱的设计,它是语言编译器(标准库函数)与操作系统之间的协定——但未必是你的程序必须要遵循的。根据现实问题,你完全可以告诉用户,键入'#'或'*'之类是结束标志。

授人以渔,不授人以鱼。
2011-09-25 14:31
exo1991
Rank: 2
等 级:论坛游民
帖 子:66
专家分:98
注 册:2011-8-30
收藏
得分:0 
EOF好像是文件的结束标志吧。
2011-09-25 14:47
回忆、想忘
Rank: 1
等 级:新手上路
帖 子:40
专家分:7
注 册:2010-12-24
收藏
得分:0 
回复 6楼 TonyDeng
谢谢
2011-09-25 16:01
快速回复:怎么这个程序只能输出1而不能输出0
数据加载中...
 
   



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

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