文件结束标志EOF 的确切含义是什么?它的值是多少?

ybluo 2003-03-21 10:19:09
我对这个概念挺模糊的,EOF是一个文件结束标志,那么它的值又是多少呢,0x&& ??,它的位置在文件的最后一个字节吗?好像不是。
为什么要这个标志,它是属于文件本身的一部分,还是操作系统用来对文件管理的开销?
操作系统的文件系统不是记录下了每个文件的大小吗。

c语言的字符串的尾部需要结束标志'\0',是因为除此之外我们没办法知道字符串什么时候结束。
但文件不同,操作系统知道文件的大小,为什么还要一个文件结束标志EOF。

以上是我的一些理解和困惑,请各位指点,谢谢!
...全文
1595 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ybluo 2003-03-25
  • 打赏
  • 举报
回复
感谢各位。
myredsun 2003-03-25
  • 打赏
  • 举报
回复
555,来迟了
rh 2003-03-25
  • 打赏
  • 举报
回复
我记得以前用TC时,EOF是-1
BCB 2003-03-25
  • 打赏
  • 举报
回复
to ybluo():
二进制文件没有文件结束符,你首先要抛弃文件符的思维定势,
上面我已提了,当文件读写位置超出文件目录中的指定的长度时,
feof()变为真,没有多么高深的东西。
只有文本文件以^z(26)为文件结束符,如果是以二进方式打开
时,仍然没有文件结束符,^z(26)后面的所有字节仍然可以读到
再不明白就不应该了
netying 2003-03-24
  • 打赏
  • 举报
回复
帮你UP
ybluo 2003-03-24
  • 打赏
  • 举报
回复
>>BCB(天下三分明月夜,二分无赖是扬州):
那二进制文件以什么作为文件结束符呢?

>>yanhuigang(烟灰钢):
如果一个二进制文件中包含 0x3呢,那不是把文件截成一部分了。
我想一个二进制文件中包含 0x3是可能的,其实包含任何值都是可能的,怎么处理这个问题?
BCB 2003-03-21
  • 打赏
  • 举报
回复
eof指end of file,是超过了文件末尾,文件读写都有个当前
位置,当这个位置超过了文件的字节总数,EOF变为真,如此
而已,但有一种特指的“文本文件”,如标准C语言中以fopen
和属性"t"打开的文件,除上面的情况,还以0x1A,内码为26的
字符(也称^z)为文件结束符,即使后面再有字节,也不算了,
这时eof为真.但现在的文件系统如API的,都是以二进方式,放
弃了这种标志.




bluedodo 2003-03-21
  • 打赏
  • 举报
回复
运行时POINT指下了最后一条RECORD的后面?
影子传说 2003-03-21
  • 打赏
  • 举报
回复
up,
可用if(Query1->EOF)判断是否结束
也可用来判断空记录的情况,呵呵--
irians 2003-03-21
  • 打赏
  • 举报
回复
EOF是数据记录结束的标志,它是布尔值。
BCB 2003-03-21
  • 打赏
  • 举报
回复
现在的文件系统并没有文件结束标志了,
只是以前的DOS系统,文本文件以^z(内码)
可作为文件结束符
netying 2003-03-21
  • 打赏
  • 举报
回复
up..
yanhuigang 2003-03-21
  • 打赏
  • 举报
回复
EOF 的值是 0x3

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧