0

私は次の構造体を持っています:

typedef struct PList {
    struct PList* next;
    Person value;
} PList;

typedef struct Person{
        char name[100]; // Left as "" if empty Person
        PersonID ID;
        float amountOwed;
}Person;

typedef struct PersonID{
        char letter;
        int number; // 7 digits
}PersonID;

プログラムを終了する前に、すべてが正しく保存されていますが、終了後 (したがって保存)、再度開く (したがって読み込み) と、Person.ID.number は 0 になります。

以下は部分の保存と読み込みです (customers は PList です)。

保存中

file = fopen("SaveData/customers.dat", "w");
int a;
    a = lengthPList(&customers);
    fwrite(&a, sizeof(int), 1, file);
    PList* temp;
    temp = &customers;
    for (; a > 0; a--) {
        int b;
        b = sizeof(temp->value);
        fwrite(&b, sizeof(int), 1, file);
        fwrite(&temp->value, sizeof(temp->value), 1, file);
        if (a > 1)
            temp = temp->next;
    }

読み込み中

file = fopen(fileName, "r");
int a;
            fread(&a, sizeof(int), 1, file);
            for (; a > 0; a--) {
                Person a;
                int b;
                fread(&b, sizeof(int), 1, file);
                fread(&a, b, 1, file);
                addPersonToList(&a, &customers);
            }

古いコード

保存

file = fopen(fileName, "w");
int a;
a = lengthPList(&customers);
fwrite(&a, sizeof(int), 1, file);
fwrite(&customers, sizeof(customers), a, file);

読み込み中

file = fopen(fileName, "r");
int a;
fread(&a, sizeof(int), 1, file);
fread(&customers, sizeof(customers), a, file);
4

0 に答える 0