0

ファイルへのバイナリデータの書き込みと読み取りを扱う宿題に取り組んでいます。この割り当てでは、複数の構造体をファイルに書き込み、それらを読み戻せるようにする必要があります。現在、私は小さく始めて、単一の構造体をファイルに書き込もうとしています (これは機能します)。ただし、ファイルからデータを読み取ると、int の値が変更されていることがわかります (ランダムな値) が、文字列は本来あるべき状態です。なぜ私はそのような問題に遭遇するのでしょうか??? マシンのエンディアンと関係がありますか?バイナリ データを正常に読み書きできる他のオプションはありますか?

typedef struct
{
int number;
char name[256];
} header;

header hdr = {.number = 1000, .name = "Testing"};
FILE * ifp;
fp = fopen("FileName", "w");
fwrite(&hdr, sizeof(hdr), 1, fp);
fclose(fp);

FILE * ofp;
header newHdr;
ofp = fopen("FileName", "rb");
fread(&newHdr, sizeof(newHdr), 1, ofp);
fclose(ofp);

printf("number = %d \nname = %s\n", &newHdr.number, &newHdr.name);


number = 329346238
name = Testing

number = -6239872395
name = Testing
4

1 に答える 1

1

ファイルをテキストとして書き込んでいますが、ファイルをバイナリとして読み込んでいます。w と r を変更して同じ属性で関数を実行してください

于 2013-02-26T05:26:10.980 に答える