• 締切済み

ファイルの中身の削除

 例えば、abc.txtに以下の内容のファイルがあったとします。  くさいおでん 30個 京都支店  虫だらけのおでん 40個 大阪支店  うまい焼き芋 20個 神戸支店  あまい飴 15個 兵庫支店 ファイルの書き込みは、fopen("abc.txt","a");で追加でいけますが、 例えば、ファイルの中から、虫だらけのおでんの行を消したいときは、どうしたらいいでしょうか?  だれかお願いします(;;)

みんなの回答

noname#48699
noname#48699
回答No.2

★「行の追加」と「行の削除」を別のプログラムにすれば良いのでは。 「行の追加」プログラムは、運用されているようですので、 「行の削除」プログラムについて、アドバイス。 後日、削除した行が必要となることも考えられます。 ★入力(旧)と出力(新)を別ファイルにすることをお薦めします。  (日付などで区別) . #include <string.h> . fp1 = fopen( "abc0111.txt", "r" ); // 入力(旧) fp2 = fopen( "abc0112.txt", "w" ); // 出力(新) . while( NULL != fgets( cBuf, 255, fp1 ) ){  if( strstr( cBuf, "虫だらけのおでん" ) ) continue;  fprintf( fp2, "%s", cBuf ); } fcloseall(); . 注:レコード長が255以内のファイルの場合。

xyzxyz11
質問者

お礼

ありがとございます^^ さっそくやってみたいと思います。

  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.1

長いプログラムの一工程の場合は、他のソフトを呼び出すのはどうかと思いますが… grep -v 虫だらけのおでん abc.txt >abc2.txt とかで処理できる作業だとは思います。 で、一時ファイルabc2.txtをリネームするなりなんなり。 grepコマンド相当の関数等があれば速い話かもしれませんが 改行コードの都合とかの扱いとか要注意かもしれない…

xyzxyz11
質問者

お礼

お礼遅れてごめんなさい。(PC触れる時間の都合で・・・) アドバイスありがとでした^^

関連するQ&A

専門家に質問してみよう