我正在制作一个将动态数据添加到文件的程序。动态数据采用链表的形式。例如,考虑以下数据:
#include <stdio.h>
struct abc
{
int a;
struct abc *next;
};
int main()
{
abc obj1;
abc obj2;
}
如何将这些对象添加到文件中?我不能写指针地址。我必须写值,但我如何使用分隔符来区分两个对象?我不能简单地使用read()
函数读取对象。
请建议一些做这件事的好方法。
您可以使用fstream
库读取和写入数据到文件。你可以在你的类中添加一个方法来处理将对象的数据写入文件,或者创建另一个类来处理从文件中读取和写入对象列表。
您需要决定使用哪种协议。
你可以这样做:
void write_abc(FILE *f) {
// count the number of elements in the list. Write the number to the file.
// write the numbers.
}
struct abc read_abc(FILE *f) {
// Read a number from the file. This is the number of elements in the list.
// Read that number of elements and add to a new list.
// Return the new list
}
这里的问题是指针的地址是在运行时分配的。如果你从一个文件中读取指针地址,而这个文件是由另一个可执行文件创建的,或者是由同一个可执行文件在另一个执行过程中创建的,那么这些地址将不相同。
您要做的是简单地将每个节点的整数部分按照它们在链表中出现的顺序存储到文件中。只要继续存储它们,直到到达列表的末尾。
然后在读取时,逐个读取文件,重新构建整个链表。一直读到文件的末尾。