2つのバイナリファイルを開く

[戻る]
みね 2005/03/10(木) 14:48:55
先日、質問させて頂いたみねです。

バイナリファイルの特定のアドレスのデータ
を取得する事は可能になったのですが、
配列に読み込んだデータからデータを探すように
変えたいと思ってます。

前回のアドバイスでfreadを使う事を知ったのですが、
ファイルを2つ読み込んで配列に代入した場合
データが変になってしまいます。

自分のイメージとしてはstream1[list1]とstream2[list2]
それぞれ別にデータを保持しその都度、読み出したいと
思ってるのですが

考え方がオカシイのでしょうか?

やりたい事は、バイナリデータ(File_a.data)の特定箇所の
値を取得、その値と同じアドレスにあるFile_b.dataの文字を
取得するという物です。(文字コード変換ソフトです)
例)File_a.dataの2バイト目の値=F0から
  File_b.dataのアドレスF0の値を取得


現在の処理は以下のような感じです

     // データa,bオープン
     stream1 = fopen( "C:\\File_a.data", "rb" );
     stream2 = fopen( "C:\\File_b.data", "rb" );

     // stream1に読み込み
     numread1 = fread( list1, sizeof( char ), 4000, stream1 );
     fclose( stream1 );

 // 二つ目のファイルを読み込む前にasc3に代入しないと値がおかしい
┏━ sprintf(asc3,"%d",list1[2]); 
┃
┃   // stream2に読み込み
┃   numread2 = fread( list2, sizeof( char ), 256, stream2 );
┃   fclose( stream2 );
┃
┗━ 始めはここに書いていた

     sprintf(asc2,"%02X",list2[atoi(asc3)]); 

     // 確認用MessageBox
     MessageBox((CString) asc2);

アドバイス宜しくお願い致します。

REE 2005/03/10(木) 15:02:28
list1とlist2はどのように定義していますか、
また、それがポインタ型である場合は、どのように初期化していますか。

みね 2005/03/11(金) 00:35:06
[[解決]]
スイマセン原因判りました。

256データを読むのに定義を

BYTE list2[53]

としてました。読み込んだファイルを変えた
時に定義を直し忘れたのが原因でした。

申し訳ありません

古いスレッドには追加発言できません。