| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 391 人关注过本帖
标题:EOF的问题
只看楼主 加入收藏
scott_dw
Rank: 2
等 级:论坛游民
帖 子:35
专家分:52
注 册:2011-8-30
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:6 
EOF的问题
while((ch=getchar())!=EOF)



我的问题是:
如果我从标准输入读入若干字符(即用上面的语句),那什么时候退出循环,它怎么知道我是到了文件尾的?
还有就是,我不输入字符,按下回车后,也没有退出循环啊?我该怎样使用这个EOF啊。我表示很困惑.
2011-09-08 09:43
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:5 
以下是引用scott_dw在2011-9-8 09:43:35的发言:

while((ch=getchar())!=EOF)



我的问题是:
如果我从标准输入读入若干字符(即用上面的语句),那什么时候退出循环,它怎么知道我是到了文件尾的?
还有就是,我不输入字符,按下回车后,也没有退出循环啊?我该怎样使用这个EOF啊。我表示很困惑.

其实简单,在键盘上输入 Ctrl+z 的组合键,就ok了
2011-09-08 10:04
mhbao
Rank: 2
等 级:论坛游民
帖 子:10
专家分:23
注 册:2011-9-8
收藏
得分:0 
EOF 是End Of File的缩写,代表文件结束,用于对fopen()打开的文件进行操作时判断文件指针是否到达尾部.
如果我没记错的话,以标准的C语言里EOF被定义为-1,getchar()函数一般情况接受不到这样的字符的.

[ 本帖最后由 mhbao 于 2011-9-8 10:15 编辑 ]
2011-09-08 10:06
statics
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:163
专家分:625
注 册:2011-8-29
收藏
得分:0 
  在 C语言,或更精确地说成 C标准函式库中表示:文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。

惟我独行...
2011-09-08 10:12
tisyang
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:132
专家分:737
注 册:2011-5-7
收藏
得分:10 
windows上 ctrl+z  unix 是 ctrl+d, ch 必须是 int 否则循环是死的

C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
2011-09-08 10:24
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 2楼 Luminal
看系统而定

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-08 10:25
mhbao
Rank: 2
等 级:论坛游民
帖 子:10
专家分:23
注 册:2011-9-8
收藏
得分:5 
以下是引用statics在2011-9-8 10:12:53的发言:

  在 C语言,或更精确地说成 C标准函式库中表示:文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
有两点不对:
1.并非只有文本文件才能EOF作为文件结束标志。实际上,EOF通常由fgetc(),fgets(),fread()等函数在文件指针遇到文件尾后返回的,还不是在文件尾含有EOF。
2.说ASCII码值的范围是0~255是把它为无符号字符,如看成有符号字符,就会有-1了,其范围也变成-128~127。
2011-09-08 10:28
快速回复:EOF的问题
数据加载中...
 
   



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

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