| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6322 人关注过本帖
标题:getchar()和EOF问题
只看楼主 加入收藏
michaelyj
Rank: 1
来 自:上海
等 级:新手上路
帖 子:55
专家分:0
注 册:2009-10-27
结帖率:88.24%
收藏
已结贴  问题点数:20 回复次数:12 
getchar()和EOF问题
小弟在看the c programming language遇到个问题
#include <stdio.h>

main()
{
    int c;
   
    c = getchar();
    while (c != EOF)
    {
        putchar(c);
        c = getchar();           /*还有如果我把这句去掉,为什么输入putchar会无限输出第一个字母呢*/
    }
}

这个循环条件里(c != EOF)是什么意思,为什么要“不等于”

应该是 C = EOF时循环终止呀~~搞不明白~~
搜索更多相关主题的帖子: getchar EOF 
2009-11-05 16:48
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
c!= EOF, EOF 是终止符,不同的系统终止符不同··
Windows的控制台里面可以通过Ctrl   +   Z来表示终止
Linux/Unix的Shell里面可以通过Ctrl   +   D来表示终止
2009-11-05 16:59
michaelyj
Rank: 1
来 自:上海
等 级:新手上路
帖 子:55
专家分:0
注 册:2009-10-27
收藏
得分:0 
EOF是终止符我知道,但是循环条件为什么要用它?不用他就会一直循环下去吗?

按Ctrl + z后回车退出循环,这个和C != EOF有关系吗?如果有关系,应该是 C = EOF才能终止呀,为什么要不等于呢?
2009-11-05 17:04
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
while (c != EOF),意思是用户输入一个字符就在屏幕上输出一个字符,while括号里面的是循环条件,只有满足那个条件才会执行循环体里的代码,那行代码的意思就是,只有用户输入的不是终止符,就在屏幕上输出刚输入的字符,如果输入的是终止符的话就跳出循环,结束。
如果是==的话,意思上就说不通了···LZ现在认为???
2009-11-05 17:13
michaelyj
Rank: 1
来 自:上海
等 级:新手上路
帖 子:55
专家分:0
注 册:2009-10-27
收藏
得分:0 
我真是茅塞顿开啊~!理解了!

现在我看到下面有个练习题!

 * 验证表达式getchar() != EOF的值是0还是1

这个我又不懂了,EOF还有值吗,这句话的意思是说,判断getchar() != EOF是真的还是假的?

0代表什么
1代表什么啊?

这书上说的好含糊啊
2009-11-05 17:18
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
收藏
得分:0 
0代表的是假,1代表的是真!是逻辑表达
2009-11-05 17:31
冰蓝诱惑
Rank: 2
等 级:论坛游民
帖 子:14
专家分:22
注 册:2009-10-16
收藏
得分:0 
呃...EOF就是Ctrl+z啊  表示结束的    0表示假  非零表示真
2009-11-05 17:56
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
回复 5楼 michaelyj
EOF在头文件<stdio.h>里定义为-1   #define EOF     (-1)
getchar()按Ctrl+Z 是反回值-1
程序代码:
#include "stdio.h"
int main(void)
{
 while(1)
  printf("%d\n",getchar());
}
按Ctrl+Z<回车>
显示:-1
while((c=getchar())!=EOF)  表示c值不等于 -1 继续循环。等于 -1结束循环。

努力—前进—变老—退休—入土
2009-11-05 18:05
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
布尔表达式的值都是0和1,即假还是真··表达式成立的话就是真,值为1,表达式不成立是假,值为0·····
2009-11-05 18:14
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:20 
你把第一句去掉就相当于说程序是这样的:
程序代码:
int main(void)
{
    int c;
    
    c = getchar();        //用户输入一个数字
    while (c != EOF)        //如果c不是EOF就循环
    {
        putchar(c);        //输出, 
    }
}

程序执行的过程是
getchar();
比如你输入了一个 a
那么再判断c 和EOF是否相等 ,结果不相等, 就进入循环体内部
输出了a之后, 再次回到while (c != EOF)一句, 结果c和循环前一样, 是a ,自然又继续循环, 结果就导致输出
aaaaaaaaaaaaaaaaaaa......(以下省略)

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2009-11-05 18:21
快速回复:getchar()和EOF问题
数据加载中...
 
   



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

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