• ベストアンサー

バイナリーデータの一部データだけ変更する方法

バイナリーデータの一部のデータを変更したいと考えています。 freadでファイルを読んでいった場合、初めからデータを読んでいくと思います。 途中のデータだけ変更する場合、freadで順に読んでいくしかないのでしょうか? もしくは別の有効な方法があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • haya-c
  • ベストアンサー率82% (24/29)
回答No.2

haya-c です。 目的の位置がわかっているのであれば、fseek() でシークポインタを移動してそこのデータを変更すればよいと思います。 例えばファイル先頭から 40 バイト目にアクセスするために、fseek() で 40 バイト目にポインタを移動してアクセスするということです。

saterain20
質問者

お礼

ありがとうございます。うまくいきました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.3

mmap(UNIX系)とかCreateFileMapping&MapViewOfFile(Windows)とかでメモリにマッピングして必要な位置だけ書き換えるとか。

saterain20
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

fseek()ですかね。 ファイルサイズによっては使えない場合もあるかも知れませんのでご注意を。 # 2Gを越えると~とかそんな感じで。 fseek64()とか用意されていたるする場合も… # 詳細は環境のリファレンスを。 ちなみに、テキストモードの時はfseek()が期待する動作をしないかも知れない。 という点にはご注意を。

saterain20
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A