| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2787 人关注过本帖
标题:getchar的疑问
只看楼主 加入收藏
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
结帖率:85.71%
收藏
 问题点数:0 回复次数:25 
getchar的疑问
问题来自Brian W.Kernighan & Dennis M.Ritchie写的c程序设计语言第二版本.

P11
#include <stdio.h>

int main ()
{
int c;

while ( ( c = getchar () ) != EOF )
putchar ( c );

}

我的理解是给入一串输入(就当字符)进入内存缓冲区, 回车后自动给入一个结束符号,然后在一个一个判断如果不是结束符号(EOF)不是则输出屏幕.最后到达结束符号后main退出.我用tc2.0调试但是该程序不能正常退出.百思不得其解.
书上对该程序的解释摘录如下:
  getchar函数在没有输入时返回一个特殊的值即EOF.
while先读入一个字符并将其赋给c,然后测试该字符是否为文件结束标记....
最后到达输入结束位置时,while循环语句终止执行,从而整个main程序执行结束.

  为什么不能正常退出程序(mian程序不会执行结束)?运行的结果像是无限循环执行该程序.难道不会自动赋EOF??那是不是该书讲的就有问题????? 我对getchar运行的理解有错误吗????
搜索更多相关主题的帖子: getchar 疑问 
2007-05-12 10:06
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 
期待答复,我在这地方也有点晕!
2007-05-12 10:16
china008
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2007-5-8
收藏
得分:0 
EOF 是end of file 的意思 ,是当你读一个文件时文件结束的标志
EOF!= 回车 所以你的程序不能结束

2007-05-12 10:44
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 

就本程序而言回车以后是否给文件一个EOF???


计算机之路是痛苦并快乐着的!!
2007-05-12 11:13
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 

#include <stdio.h>

int main ()
{
int c;

while ( ( c = getchar () ) != '\n' )
putchar ( c );

}
这样就行拉嘛


   好好活着,因为我们会死很久!!!
2007-05-12 11:35
vistayulei
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-4-24
收藏
得分:0 
是啊!有时候我也感觉到挺奇怪的,while ( ( c = getchar () ) != '\n' )
这里的‘\n'表示什么意思啊?-----------------是“换行”还是“回车”
是按‘Enter'---回车键就代表这个意思(换行或者回车)吗?
在有的程序中还有while ( ( c = getchar () ) != '\0’ )这个又是什么意思?请大家帮我解读一下,-----------在此谢谢拉
2007-05-12 13:04
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 

'\n' 这样就是 回车的ASCII 当输入的数等于这个ASCII的时候
就不循环拉
当然 '0'就是输入0的时候就跳出去拉


   好好活着,因为我们会死很久!!!
2007-05-12 13:08
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 
我的问题不是为了想这个程序能不能结束退出。我的目的是想知道为什么这个程序不能退出。
回答的时候请大虾们好好阅读下。

到底EOF有没有在输入完成后加在文件结尾??

是Brian W.Kernighan & Dennis M.Ritchie写的书出问题了吗??

计算机之路是痛苦并快乐着的!!
2007-05-12 13:30
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 
我不是想求怎样解决这个问题。
我想知道为什么这个程序会出这样的问题。
请详细阅读问题。

计算机之路是痛苦并快乐着的!!
2007-05-12 13:33
冰天雪
Rank: 1
等 级:新手上路
威 望:1
帖 子:331
专家分:0
注 册:2007-2-27
收藏
得分:0 
EOFd 在不同的系统中的定义是不一样的,它不是简单的回车

你需要按ctrl+z 或者 ctrl+d, 这才是结束符

2007-05-12 16:00
快速回复:getchar的疑问
数据加载中...
 
   



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

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