私は現在、次の 2 つの構造体を使用するプログラムに取り組んでいます。
//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
struct内の各文字列メンバーは、 内のlistEntries
配列と同様に動的に割り当てられFriendList
ます。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);
}