ファイルから1部のみ情報を削除するには?

解決


メイト  2007-08-01 16:11:37  No: 65942  IP: 192.*.*.*

VS2005 + MFCで作成しています。

テキストファイルに変更を加えるプログラムを組んでいます。
以下のようなファイルがあるとして、

------
AAA
BBB
CCC
DDD
EEE
------

このファイルから「CCC」の行のみを削除するというような動作をしたいのです。
今はファイルを読み込んで、変更を加えて、ファイルを全部作り直すという方法で動いてはいるのですが、
ファイルが大きくなった場合のことを考えると、効率のいい方法や一般的な方法があるのではと思い質問させて頂きました。

分かる方がいましたら、教えてください。
よろしくお願いします。

編集 削除
επιστημη  2007-08-01 16:30:38  No: 65943  IP: 192.*.*.*

安直なのは"絶対に使われない文字"を使って「この行無効」の印を打つ。
たとえば 先頭が '#' で始まってれば無効とする、とか。

読む時は '#' から始まる行を読み飛ばす。
書くときは 有効行だけを書きこむ。

編集 削除
のり  2007-08-01 16:41:15  No: 65944  IP: 192.*.*.*

出力ファイルとは別に中間ファイルを作成します。
この中間ファイルは、レコード(行)単位にアクセスができるようにインデックスを作成する等、変更に対して柔軟に対応ができるようにしておきます。
変更を加える際は、中間ファイルにどんどん変更を加えます。
出力ファイルが必要になったら、この中間ファイルより出力ファイルを生成します。

編集 削除
メイト  2007-08-01 17:41:20  No: 65945  IP: 192.*.*.*

επιστημηさん、のりさん返信ありがとうございます。

>たとえば 先頭が '#' で始まってれば無効とする、とか。
ファイルは、絶対削除するという前提条件がつきますので、
この方法は使えません。
επιστημηさん、説明不足ですいませんでした。

のりさんの方法を使ってみようと思います。
お二人ともありがとうございました。

編集 削除