• ベストアンサー

C言語のファイル操作

すいません、C言語の初心者です。 C言語のファイル操作において、ファイルから読み込んで、読み込んだ分だけその情報を消していくというのは可能ですか?可能であればサンプルソースのあるURLもしくはソースそのものを教えて下さい。

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.5

通常は 1.元ファイルを「読み込みモード」で開く 2.作業用ファイルを「新規作成の書き込みモード」で作成する。作成するフォルダは元ファイルと同じ場所にする 3.元ファイルから適当に何バイトか読む 4.それが「消して良いもの」なら、5の作業をせずに6へ 5.それが「消してはダメなもの」なら、作業用ファイルに書き出す 6.元ファイルが「エンド・オブ・ファイル」になってないなら3から繰り返す 7.元ファイルが「エンド・オブ・ファイル」になっているなら、元ファイルを閉じる 8.作業用ファイルも閉じる 9.元ファイルを削除する 10.作業用ファイルを、元ファイルの名前にリネームする という処理をします。

yamada11
質問者

お礼

ありがとうございます。まだまだ勉強不足でして・・・。 丁寧に回答していただきありがとうございました。

その他の回答 (4)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

もっと具体的に「こうしたい」というのがあれば考えようはありますが.... 本当に, どうしても「読み込む都度」読み込み済みの情報を消さないとだめなんですか?

  • eroermine
  • ベストアンサー率18% (83/444)
回答No.3

"r+" でオープン fseek で読みたい位置に移動して n バイト読む fseek で読んでしまった位置に移動して n バイト 0 を書き込む

yamada11
質問者

お礼

ありがとうございます。まだまだ勉強が足りないようです。がんばります。

回答No.2

>ファイルから読み込んで、読み込んだ分だけ 読み込み方にもよる気がしますね。 いくつか思いつきますが、 ・ファイルを全部読む ・ファイルの最初から(もしくは終わりから)必要分だけ読む ・ファイルの必要部分だけ読む 読み込んだ分だけ消すということなので ・ファイルを全部読む fopen で "w" でオープンして閉じる。 ・ファイルの最初から(もしくは終わりから)必要分だけ読む ・ファイルの必要部分だけ読む 別ファイルに読み込んでいなかった部分を書き出して、 元のファイルを削除して、書き出したファイルを 読み込んだファイル名に変更する。 もっと効率のいい方法があるでしょうが、 初心者には単純で分かりやすい気がしますね。

yamada11
質問者

お礼

わかりました。その線で作ってみたいと思います。 ありがとうございました。

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

>ファイルから読み込んで、読み込んだ分だけその情報を消していく これが、消した分だけデータを前に詰めていく(当然ファイルサイズもその分だけ小さくなっていく)ことであれば、 可/不可だけで言えば可能ですが処理としては単純にはできません。 実際に必要な部分を読み込んだら、それ以降の部分を一度読み込み前詰めにして書き出す処理を構築する必要があります。 「消す」=「ゼロ等で埋める(ファイルサイズ自体は変わらない)」であればそれなりに楽ではあります。

yamada11
質問者

お礼

そうですか。ありがとうございます。なんとなくイメージが掴めました。

関連するQ&A