我正在使用c语言开发一个数据库平面文件项目。我创建了一个成员很少的结构。我使用fwrite()将它们写入二进制文件,使用fread()获取数据。我的两个主要问题
首先,我们可以在文本文件中写入结构吗?我没有看到好的例子。用文本格式写实际上是错误的吗?当我用“w”而不是“wb”写作时,我得到的是文本格式,但有一些额外的单词。
第二,这些fread()&fwrite如何工作。他们在一块数据上操作如何获得下一块的地址。我的意思是我们确实有指针,但是文件没有任何地址,所以指针如何转到下一个块?
最佳答案
首先,我们可以在文本文件中写入结构吗?我没有看到好的例子
。用文本格式写实际上是错误的吗?当我写作的时候
使用“w”而不是“wb”,我得到了文本格式,但是有一些额外的
话
假设您的结构中包含一些整数。如果使用fwrite
编写它们,这些整数将以二进制格式写入文件。
如果您尝试将其解释为文本,这将不起作用,文本编辑器将尝试将二进制值解释为字符-这很可能不会像您期望的那样起作用。
例如,如果您的结构包含整数3,当使用fwrite
写入时,它将存储为
00000000 0000000 0000000 00000011 (3 in binary)
假设是大端符号。现在如果你试图用文本编辑器阅读上面的内容,当然你不会得到想要的效果。
不提编译器可能插入到结构中的填充字节。
第二,这些fread()&fwrite如何工作。他们在一块
数据他们如何得到下一个块的地址。我是说我们确实有
指针,但文件没有任何地址,所以指针如何转到下一个
布洛克?
这很可能是使用操作系统。
另外,我建议您多读一些关于序列化的内容,并尝试理解文本文件和二进制文件之间的区别。
关于c - fread()和fwrite在C编程中如何工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38314088/