gpt4 book ai didi

c - 在 C 中 fwrite/fread 动态链表的最佳方式

转载 作者:太空宇宙 更新时间:2023-11-04 02:52:55 25 4
gpt4 key购买 nike

我有这样的结构:

struct data
{
int id;
char *title;
char *description;
int year;
};

现在我必须使用 fwrite 将列表保存在一个文件中,然后使用 fread 读取它。

什么是最好的方法?我不能做类似的事情

fwrite(info, sizeof(struct data), 1, ptr_file);

因为结构体有两个指针。如果我一个字段一个字段地写,用strlen来写字符串,我怎么能在读取的时候知道每个字符串的大小呢?

谢谢。

最佳答案

您不能使用指向文件的指针来编写结构,因为那样会写入指针,而不是它们指向文件的内容。这意味着当您稍后尝试读取该结构时,指针将指向“随机”内存。

您可能想阅读有关 serialization 的内容.

一个简单的方案是分别写idyear成员,然后是第一个字符串的长度(作为固定大小的值),然后是字符串,然后是第二个字符串的长度和实际字符串。

另一种更简单的方法是使用固定大小的数组而不是字符串指针。这样做的缺点是,如果您不使用分配给数组的所有空间,则会浪费一些内存。一个更糟糕的缺点是您不能拥有比数组更大的字符串。

关于c - 在 C 中 fwrite/fread 动态链表的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20299305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com