2011-03-26 48 views
1

HI, 我读的地址一些C文本:https://cs.senecac.on.ca/~btp100/pages/content/files_p.html 在文中,他们提到有关文件的数据结构的图像:关于文件数据结构的问题?

enter image description here

我不明白包含在文件中数据结构以及它如何连接到物理文件? 任何人都可以详细说明一下吗? 谢谢。

+0

内核知道文件结构内部是什么,以及如何读取它......它取决于实现。 – Macmade 2011-03-26 15:14:43

+0

[文件类型的对象的属性是什么]的可能的重复(http://stackoverflow.com/questions/4862532/what-are-the-properties-of-the-objects-of-type-file) – 2011-03-26 15:18:35

+0

@MacMade:'FILE'是一个用户级结构。 – 2011-03-26 15:18:55

回答

1

正如评论所说,你不应该需要访问对象的细节指向一个FILE* - 使用fread()fgetc()

如果你想知道它包含的定义通常在stdio.h中,但它不会很有用!

它能做什么是提供用于由一个文件描述符(只是一个int,通常情况下)来表示,用函数中使用像open()“原始文件”的缓冲器,read()等。内部字段是有管理缓冲区,文件中的位置,错误标志等。

如果您使用fgetc()从文件中读取一个字符,库实际上会从基础文件描述符中加载一个数据块,将其存储并返回一个字符。下次您使用fgetc()时,它将从其存储中获取下一个字符,并且不必再次访问实际文件。一旦所有来自商店的字符都被返回,底层文件将被访问以获取下一个块。如果你想逐字读字符,这会更有效率。这同样适用于使用fputc()进行书写。

还值得注意的是,文件描述符可能实际上不是磁盘上的文件,它可能是串口,管道或其他东西。