c 使用结构指针数组写入和读取文件

标签 c pointers file-io struct io

<分区>

我在 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 中的项目数。如果是这样,这很简单。

关于写作:

  1. 写出trex链表中的第一个结构
  2. 从第一个 trex 结构中循环并一次写出 struct list *filenames
  3. trex 链表中的下一个项目重复#1,直到列表耗尽。

在阅读时,请记住:您所有的建议最初都是毫无值(value)的。你必须自己把它们缝合在一起。但结构在文件中的排列顺序正确。

  1. 阅读第一个trex结构。你知道它的大小,阅读它不是问题。将 next 指针固定为空。
  2. 循环并一次读取每个struct list *filenames。你知道它们有多少是因为你刚刚阅读的结构中的 fn_len。将该链表拼接在一起并将其附加到 trex 结构。
  3. 对下一个 trex 结构重复 #1 直到 EOF,根据需要将该结构连接到链表的末尾。

这应该会解决它。

关于c 使用结构指针数组写入和读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12641474/

相关文章:

c++ - 容器、智能指针和模板化继承类

c++ - 如何在不更改其余代码的情况下替换 C++ 模板以使其与 C 兼容?

c - 在 C 中使用函数指针访问外部函数

c - while循环中的哪条语句会先执行?

pdf - 后记 : Reading a file, 写入 pdf

C# 文件异常 : cannot access the file because it is being used by another process

c - 在 C 中使用 ODE 时 undefined symbol

c - 关闭 printf 语句的宏

c - 静态初始化顺序失败会在C程序中发生吗?

Python:写入文件并将其读回