我在 c 中有一个数据结构,它是一个结构指针数组:
struct trex *trex_arr[128];
struct trex{
struct trex *next;
char name[LEN];
unsigned int id;
int groups[LEN];
struct list *filenames; //linked list
unsigned int fn_len;
};
我想将数组写入文件。我知道我需要在“下一个”指针和链表中的每个元素中写入对象,但是我该怎么做才能成功地将它读回我的原始数组(数组中有链接还有)?
顺便说一句,最简单的方法是按顺序写出结构,以便:
[trex item #1]
[list item #1]
[list item #2]
[list item #3]
[trex item #2]
[list item #1]
[list item #2]
[list item #3]
[list item #4]
etc...
(当然,这只是其中的一部分。这些是二进制写入,这只是一个视觉效果。)
我希望 fn_len
描述链表 struct list *filenames
中的项目数。如果是这样,这很简单。
关于写作:
- 写出
trex
链表中的第一个结构
- 从第一个
trex
结构中循环并一次写出 struct list *filenames
- 对
trex
链表中的下一个项目重复#1,直到列表耗尽。
在阅读时,请记住:您所有的建议最初都是毫无值(value)的。你必须自己把它们缝合在一起。但结构在文件中的排列顺序正确。
- 阅读第一个
trex
结构。你知道它的大小,阅读它不是问题。将 next
指针固定为空。
- 循环并一次读取每个
struct list *filenames
。你知道它们有多少是因为你刚刚阅读的结构中的 fn_len
。将该链表拼接在一起并将其附加到 trex 结构。
- 对下一个
trex
结构重复 #1 直到 EOF,根据需要将该结构连接到链表的末尾。
这应该会解决它。