バイナリファイルでintの配列を読み書きしようとしています。2 つの関数は、多かれ少なかれ次のようになります。
保存機能
int numbers[6]={0, 2, 3, 3, 0, 1};
FILE *file;
if(file=fopen(filename, "wb")==NULL)
{
printf("Something went wrong reading %s\n", filename);
return 0;
}
else
{
int i;
for(i=0; i<6; i++)
fprintf(file, "%d", numbers[i]);
}
fclose(file);
負荷関数
FILE *saved_data;
int errors=0;
if((saved_data=fopen(filename, "rb"))==NULL)
errors++;
else
{
fread(first, sizeof(int), 1, saved_data);
fread(second, sizeof(int), 1, saved_data);
fread(third, sizeof(int), 1, saved_data);
fread(fourth, sizeof(int), 1, saved_data);
fread(fifth, sizeof(int), 1, saved_data);
fread(sixt, sizeof(int), 1, saved_data);
}
fclose(saved_data);
プログラムをデバッグすると、デバッガーは最初の要素が次のようになっていることを通知します
(gdb) print first
$1 = (int *) 0x7fff5fbff968
(gdb) print *first
$2 = 858993200
私はこれを理解できません。エディターで開くと、ファイルには023301と表示されます