1

バイナリファイルを読んでいます。最初の 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 が返されるため、このアプローチが機能するかどうかさえわかりません。私は何を間違っていますか?

4

2 に答える 2