我目前正在开发一个使用这两个结构的程序:
//Struct to hold contact info about a friend
typedef struct
{
char *firstName, *lastName;
char *home, *cell;
} Friend;
//Struct to hold a list of friends and keep track of its size.
typedef struct
{
Friend *listEntries;
size_t listSize;
} FriendList;
结构中的每个字符串成员Friend
都是动态分配的,listEntries
内部的数组也是如此FriendList
。我正在尝试将 a 保存FriendList
为二进制记录,但是当我尝试使用 执行此操作fwrite()
然后使用 读取它时fread()
,从文件中读取的listEntries
数组为空。FriendList
有没有办法保存这样的动态结构?
编辑:我用来读/写结构的函数是:
void writeList(FriendList *fl, char* filename)
{
FILE *fp = fopen(filename, "wb+");
if(fp != NULL)
{
fwrite(fl, sizeof(FriendList), 1, fp);
}
fclose(fp);
}
void readList(FriendList *dest, char* filename)
{
FILE *fp = fopen(filename, "rb");
if(fp == NULL)
{
printf("oops...");
}
else
{
fread(dest, sizeof(FriendList), 1, fp);
}
close(fp);
}