首先,如果这个问题以前已经被问过或者有一个明显的解决方案,而我没有看到,那么请原谅。我找到了一个类似的问题,但我认为我的问题比以前问的更深入一些。
我有一个如下所示的结构:
typedef struct {
int id;
char *title;
char *body;
} journal_entry;
Q: 如何在C(不是C ++)中编写并加载指向内存的指针的内容,而不使用固定长度?
如果我将title
或body
写入文件,会不会得到垃圾数据而不是实际存储的信息?我不知道日志条目的title
或body
的大小,而且大小可能会因条目而异。
我的研究表明,我需要取消引用指针并单独为结构的每个部分fwrite
。但是,我不确定如何在不混淆数据和结构的情况下跟踪数据和结构,尤其是对于较大的文件。此外,如果这些不是我想要存储在文件中的唯一项目(例如,我可能希望稍后包括小图像),我不确定如何为方便起见对文件结构进行排序。
另一个(可能是感知到的)问题是,我已经使用malloc
为加载数据时的正文/条目字符串分配了内存,当我再次加载条目时,我将如何知道要分配多少内存给字符串?我是否需要扩展我的结构以包括int body_len
和int title_len
?
非常感谢您提供的指导或建议。