ページ 11

[C]バイナリファイルから任意のバイト列を検索し、その文字列の次バイトを上書きするプログラム

Posted: 2008年2月21日(木) 11:58
by PPN
こんにちは。
はじめて利用させていただきます。

C言語は授業+独学で勉強中ですが、
まだまだ初心者レベルです。

学校で、C言語の課題が出されており、
以下の機能をもつプログラムを作成しなければならないのですが、
行き詰ってしまったので質問をさせてください。
 ・バイナリファイルを開く
 ・任意のバイト列を入力する
 ・バイナリファイル内より、任意のバイト列を検索する
 ・該当するバイト列が存在した場合、そのバイト列の次1バイトのデータを書き換える

参考書、Web等調べて作成中しているのですが、
現状、
 ・バイナリファイルを開く
 ・任意のバイト列を入力する
この2つの機能についてはコードを書けました。

しかし、
 ・バイナリファイル内より、任意のバイト列を検索する
 ・該当するバイト列が存在した場合、そのバイト列の次1バイトのデータを書き換える
この2つに関しては手も足も出ない状況です。

使用OSはXP Pro SP2(32bit)
開発環境はVisual C++ 2008 Express Editionです。

どのようにコードを書けばよいか、
教えていただけますでしょうか?

回答、よろしくお願いいたします。

Re:[C]バイナリファイルから任意のバイト列を検索し、その文字列の次バイトを上書きするプログラム

Posted: 2008年2月21日(木) 12:34
by やそ
課題ということで、高度な検索は求められていないと思います。
ならば
入力した文字列とバイナリファイルからの読み込みを1文字づつ比較すればよいと思います。

それよりも、
「 ・該当するバイト列が存在した場合、そのバイト列の次1バイトのデータを書き換える 」
についてはこちらでも手も足も出ないです。
なぜなら、どんな値に書き換えるのでしょう?

Re:[C]バイナリファイルから任意のバイト列を検索し、その文字列の次バイトを上書きするプログラム

Posted: 2008年2月21日(木) 13:28
by しりうす~
たぶん、言葉に惑わされて難しく考えてるんじゃないかなと予想。
ファイル内の検索とか文字の書換えとかは、ファイル操作で行うわけではないのでは(そう指示されていない限り)。

こんな感じでいけると思う。

1:ファイルを開く(無ければ作成)
2:ファイルに何か書き込む(ついでに閉じる?)
3:ファイルを開いてメモリに中身を"全部"読み込む
4:メモリ内に指定のバイト列が存在するか比較する(見つかったなら書換え処理を行う)
5:元ファイルに上書き処理でメモリの中身を書き出す(元ファイルを削除して作り直してもOK?)