は、だから私は、次のようにbinファイルにやや複雑な構造を保存:最後に、私は「baseda」を読み込むファイルを置き換えるファイルであることファイル内に作成したのと同じコードを同じコードでコピーするにはどうすればよいですか?
fwrite(&ca, sizeof(ca), 1, tempor);
for(i=0; i<ca; i++){
fwrite(&alunue[i].ndp, sizeof(int), 1, tempor);
for(j=0; j<alunue[i].ndp; j++){
fwrite(&alunue[i].peract[j].ndu, sizeof(int), 1, tempor);
}
}
fwrite(alunue, sizeof(alumno), ca, tempor);
「tempor」。
構造は次のようになります。
typedef struct name{
char n[125];
} name;
typedef struct uda{
name nomuda;
name clave;
float calif;
} uda;
typedef struct periodo{
int ndu;
name nomper;
uda *uniapr;
} periodo;
typedef struct alumno{
int nua, ndp;
name n, ap, am;
periodo *peract;
struct alumno *a, *s;
} alumno;
と私はそれがこのようになります読み取るために使用したコード:
fread(&n, sizeof(int), 1, baseda);
alunue = malloc(n*sizeof(alumno));
for (i = 0; i < n; i++) {
fread(&m, sizeof(int), 1, baseda);
alunue[i].peract = malloc(m*sizeof(periodo));
for (j = 0; j < m; j++) {
fread(&o, sizeof(int), 1, baseda);
alunue[i].peract[j].uniapr = malloc(sizeof(uda));
}
}
fread(alunue, sizeof(alumno), n, baseda);
ものであり、nは値を取得していないようです私が一時的に最初に保管したcaの
ありがとうございました。
あなたが使用して書き込み
@WhozCraigを試してみてください。 –
「私が最初に保管したcaの価値」は、実際には事実です。あなたのIOコールはまったくチェックされません。あなたはそれをフラッシュ/クローズした後にファイルをヘキサダンプしましたか? (あなたは、あなたがbasaを開く前に、それを洗い流したり閉じたりしましたか?)。このコードは、現在のところ持っていない問題を再現する[最小限で完全な、検証可能な例](https://stackoverflow.com/help/mcve)を求めています。 – WhozCraig