- ベストアンサー
C言語
毎度お世話になっております。 C言語の勉強を最近始めたのですが、ファイル処理で どうしても出来ない事があり質問させてもらいました。 処理内容は 「特定のファイルの指定した行だけを削除する」です。 fopenしたファイルをscanfによって削除したい行を指定して ファイルの編集をしようと思っているのですが、どうもできません。 初歩的な処理かと思いますがどうか教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ファイルは原稿用紙みたいなものです ファイルの書き込みは原稿用紙のますに隙間無く書いていくようなものです ファイル操作で出来るのは 最後に付け足すこと 途中の文字を消して同じ文字数で上書きすること 最後を消してファイルを短くすること くらいで途中の挿入や削除といった操作はできません パソコン上で出来るように見えるのは新たに全部書き直しているだけです
その他の回答 (3)
- SilverThaw
- ベストアンサー率32% (260/806)
No.1追記 とりあえず、「一つのファイル」ですべてやろうとはせずに、 「元のファイル」(読むだけ)と「削除した後のな内容を出力するファイル」とに分けて ファイルアクセスについて理解してから考えた方がいいと思う。
- asuncion
- ベストアンサー率33% (2127/6290)
その、どうもうまくいかないというソースを載せてみてください。
- SilverThaw
- ベストアンサー率32% (260/806)
こちらの認識が間違っていなければ >fopenしたファイルをscanfによって削除したい行を指定して >ファイルの編集をしようと思っているのですが、どうもできません。 では(数十文字程度ならともかく、大きなデータでは)できないと思う。 削除したい部分の先頭から、削除後に詰める部分を読み上書きするようにしていく処理が必要。 例えば、二行目を削除する場合、二行目の開始位置から三行目を読んで上書きしていかなければいけない。 小さいデータで、メモリに余裕があるのなら全部を読み込んだあと必要な部分を書き出すという方法もありますが。