私は現在、構造体をバイナリファイルに保存したいという問題に直面していますが、構造体のサイズは毎回間違っているようです。ここで動的に割り当てられたコンテンツを持つ構造体のサイズを取得する方法は? (C)
は私の構造のコードです:
typedef struct {
int lines;
int columns;
int ** matrix;
char * name;
} labyrinthe;
そして、これは私がそれをファイルに保存してる方法です:
void writeInFile (labyrinthe * l, FILE * f) {
fwrite(l, sizeof(l), 1, f); //already tried with &l instead of l
}
ただし、ファイルは常にさえ、正確に22バイトが含まれています行列の大きさが111 * 111グリッドの場合どんな助けでも本当に感謝しています。
読んでいただきありがとうございます。
Lはポインタであり、上記のポインタのサイズをとっています。サイズ*で* lを試してください。しかし、あなたの構造体にもポインタが含まれているので、より大きな問題があります。あなたは何とかそれをマーシャルする必要があり、それは容易ではありません。 – Vality
あなたはデータを保存しません。それは 'struct'と同様に提出する必要がありますが、ポインタは無関係です。データは構造体の一部ではなく、データが実際にメモリに格納されている場所へのポインタだけです。後でデータを読み込むときは、元のようにメモリを再割り当てする必要があります。そのため、ファイルから読み込んだデータ構造を再作成できるように、データをファイル化する必要があります。 –