1
2
编写对象时,将指针值写入文件,而不是指向信息。 你需要做的是 只是写/写你的整个结构,而不是一次一个领域。fwrite a和f就像处理对象一样,但接下来需要对字符串执行一些特殊的操作。尝试fwrite/fread的长度(在数据结构中没有表示,这很好),然后fwrite/fread字符缓冲区。当然,在读的时候你需要分配它。 |
2
2
否则,您只需存储一个指向动态分配的内存的指针,该内存将在程序退出时被销毁(因此,当您稍后检索此指针时,该地址是毫无价值的,并且很可能是非法访问的)。 |
3
1
你保存的是一个指向字符的指针,而不是字符串本身。当您尝试重新加载文件时,您正在使用不同地址空间的新进程中运行,并且该指针不再有效。您需要按值保存字符串。 |
4
1
我想添加一个关于潜在可移植性问题的注释,它可能取决于数据文件的计划使用而可能存在,也可能不存在。 如果要在不同端的计算机之间共享数据文件,则需要为非字符类型(int、short、long、long long…)配置文件到主机和主机到文件转换器。此外,使用 标准高度 (int16_t,int32_t,…)以保证您想要的大小。 但是,如果数据文件不会在任何地方移动,则忽略这两点。 |
5
1
这个
先写大小
书写终端字符
在这种方法中,文本数据后面跟着一个“终端”字符。与C语言字符串非常相似。
优点:首先需要的空间比尺寸小。
固定大小字段
将数据结构写入文件时,应 考虑使用数据库 以及调试 经过测试 . |
cobb208 · Malloc正在为释放指针引发错误 2 年前 |
kernel · 打印结构数组内容时出错 2 年前 |
mwitz · 在Rust中无法正确写入结构的函数属性 2 年前 |
Ulysses · 无法访问结构字段(Rust) 2 年前 |
Tor · 使用Box<None>值初始化struct 2 年前 |
Yestin · Golang如何初始化数组结构[duplicate] 2 年前 |