私は次の構造体を持っています:
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);