バイナリファイルを読んでいます。最初の 16 ビットは配列インデックスを表し、次の 16 ビットはリストされる 16 ビット項目の数を表し、残りの 16 の倍数はそれらすべての 16 ビット項目を表します。たとえば、次のファイル 'program' の 16 進ダンプ:
30 00 00 02 10 00 F0 25
インデックス 0x3000 を表し、その後に 0x0002 要素 (0x1000 と 0xF025) が続きます。
FILE *fp = fopen(program, "rb");
char indexChar, nItemsChar;
u_int16_t index, nItems;
fread (&indexChar, 2, 1, fp);
fread (&nItemsChar, 2, 1, fp);
address = strtol(&indexChar, NULL, 16);
nItems = strtol(&nItemsChar, NULL, 16);
for (u_int16_t i = 0; i < nItems; ++i)
{
fread (state->mem + index + i, 2, 1, fp);
}
nItemsChar に fRead() しようとすると EXC_BAD_ACCESS が返されるため、このアプローチが機能するかどうかさえわかりません。私は何を間違っていますか?