0

fwriteを使用してCでファイルにハッシュテーブルを書き込み、freadを使用してそれを読み取ろうとしています。私はこの構造体を持っています:

struct table {
    struct person *person_table[SIZE];
};
static struct table hashtable;

私がフレッドを使うとき、私は持っています

    fread(&hashtable, sizeof(struct table), 1, file)

およびfwrite:

    fwrite(&hashtable, sizeof(struct table), 1, file)

ただし、読み取りと書き込みの後でデータに正しくアクセスできません。何が問題ですか?

4

1 に答える 1

0

ハッシュテーブルのデータをファイルに書き込まないでください。代わりにstruct person、逆シリアル化後に無効になる要素へのポインタに含まれるアドレスを書き込みます。

データをファイルにも書き込む必要があります(疑似コード、struct personそれ以上のポインターが含まれていないと仮定):

for (person_pointer in person_table) {
  fwrite(person_pointer, sizeof(person), 1, file);
}
于 2012-09-27T19:50:08.550 に答える