- 締切済み
ファイルの中身の削除
例えば、abc.txtに以下の内容のファイルがあったとします。 くさいおでん 30個 京都支店 虫だらけのおでん 40個 大阪支店 うまい焼き芋 20個 神戸支店 あまい飴 15個 兵庫支店 ファイルの書き込みは、fopen("abc.txt","a");で追加でいけますが、 例えば、ファイルの中から、虫だらけのおでんの行を消したいときは、どうしたらいいでしょうか? だれかお願いします(;;)
- みんなの回答 (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以内のファイルの場合。
- vaidurya
- ベストアンサー率45% (2714/5983)
長いプログラムの一工程の場合は、他のソフトを呼び出すのはどうかと思いますが… grep -v 虫だらけのおでん abc.txt >abc2.txt とかで処理できる作業だとは思います。 で、一時ファイルabc2.txtをリネームするなりなんなり。 grepコマンド相当の関数等があれば速い話かもしれませんが 改行コードの都合とかの扱いとか要注意かもしれない…
お礼
お礼遅れてごめんなさい。(PC触れる時間の都合で・・・) アドバイスありがとでした^^
お礼
ありがとございます^^ さっそくやってみたいと思います。