我正在使用c语言处理数据库平面文件项目。我创建了一个成员很少的结构。我正在使用 fwrite() 将它们写入二进制文件和 fread() 来获取数据。我的两个主要问题
第一,我们可以在文本文件中写入结构吗?我没有看到好的例子。以文本格式编写它实际上是错误的吗?当我使用"w"而不是"wb"写作时,我得到了文本格式,但有一些额外的单词。
2nd 这些 fread() 和 fwrite 如何工作()。它们对一个数据块进行操作,如何获得下一个块的地址。我的意思是我们确实有指针,但文件没有任何地址,那么指针如何转到下一个块?
第一,我们可以在文本文件中写入结构吗? 我没有看到好的例子 .当我写的时候,用文本格式写它实际上是错误的吗 使用"W"而不是"WB",我得到了文本格式,但有一些额外的 的话
想象一下,你的结构里面包含一些整数。现在,如果您使用 fwrite
编写它们,这些整数将以二进制格式写入文件。如果您尝试将其解释为文本,这将不起作用,文本编辑器将尝试将二进制值解释为字符 - 这很可能不会按预期工作。
例如,如果你的结构包含整数 3,当使用 fwrite
编写时,它将被存储为
00000000 0000000 0000000 00000011 (3 in binary)
假设大端符号。现在,如果您尝试使用文本编辑器阅读上述内容,当然不会获得所需的效果。
没有说编译器可能插入到结构中的填充字节。
2nd 这些 fread() 和 fwrite 如何工作()。它们在 数据他们如何获得下一个块的地址。我的意思是我们确实有 指针但文件没有任何地址,所以指针如何转到下一个 块?
这很可能是使用操作系统处理的。
附言。我建议您阅读更多有关序列化的信息,并尝试了解文本和二进制文件之间的区别。