こんにちは。
はじめて利用させていただきます。
C言語は授業+独学で勉強中ですが、
まだまだ初心者レベルです。
学校で、C言語の課題が出されており、
以下の機能をもつプログラムを作成しなければならないのですが、
行き詰ってしまったので質問をさせてください。
・バイナリファイルを開く
・任意のバイト列を入力する
・バイナリファイル内より、任意のバイト列を検索する
・該当するバイト列が存在した場合、そのバイト列の次1バイトのデータを書き換える
参考書、Web等調べて作成中しているのですが、
現状、
・バイナリファイルを開く
・任意のバイト列を入力する
この2つの機能についてはコードを書けました。
しかし、
・バイナリファイル内より、任意のバイト列を検索する
・該当するバイト列が存在した場合、そのバイト列の次1バイトのデータを書き換える
この2つに関しては手も足も出ない状況です。
使用OSはXP Pro SP2(32bit)
開発環境はVisual C++ 2008 Express Editionです。
どのようにコードを書けばよいか、
教えていただけますでしょうか?
回答、よろしくお願いいたします。
[C]バイナリファイルから任意のバイト列を検索し、その文字列の次バイトを上書きするプログラム
Re:[C]バイナリファイルから任意のバイト列を検索し、その文字列の次バイトを上書きするプログラム
課題ということで、高度な検索は求められていないと思います。
ならば
入力した文字列とバイナリファイルからの読み込みを1文字づつ比較すればよいと思います。
それよりも、
「 ・該当するバイト列が存在した場合、そのバイト列の次1バイトのデータを書き換える 」
についてはこちらでも手も足も出ないです。
なぜなら、どんな値に書き換えるのでしょう?
ならば
入力した文字列とバイナリファイルからの読み込みを1文字づつ比較すればよいと思います。
それよりも、
「 ・該当するバイト列が存在した場合、そのバイト列の次1バイトのデータを書き換える 」
についてはこちらでも手も足も出ないです。
なぜなら、どんな値に書き換えるのでしょう?
Re:[C]バイナリファイルから任意のバイト列を検索し、その文字列の次バイトを上書きするプログラム
たぶん、言葉に惑わされて難しく考えてるんじゃないかなと予想。
ファイル内の検索とか文字の書換えとかは、ファイル操作で行うわけではないのでは(そう指示されていない限り)。
こんな感じでいけると思う。
1:ファイルを開く(無ければ作成)
2:ファイルに何か書き込む(ついでに閉じる?)
3:ファイルを開いてメモリに中身を"全部"読み込む
4:メモリ内に指定のバイト列が存在するか比較する(見つかったなら書換え処理を行う)
5:元ファイルに上書き処理でメモリの中身を書き出す(元ファイルを削除して作り直してもOK?)
ファイル内の検索とか文字の書換えとかは、ファイル操作で行うわけではないのでは(そう指示されていない限り)。
こんな感じでいけると思う。
1:ファイルを開く(無ければ作成)
2:ファイルに何か書き込む(ついでに閉じる?)
3:ファイルを開いてメモリに中身を"全部"読み込む
4:メモリ内に指定のバイト列が存在するか比較する(見つかったなら書換え処理を行う)
5:元ファイルに上書き処理でメモリの中身を書き出す(元ファイルを削除して作り直してもOK?)