• 締切済み

ファイルの中身の削除

 例えば、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

  • ファイルのデーター削除

    下記のデーターが入っているabc.txtのファイルから 初めの2行を削除したいのですがよろしくお願いします。 10,aaa,100 11,bbb,200 12,ccc,200 13,ddd,300

    • 締切済み
    • PHP
  • ファイル入力

    下記のようにテキストファイルをオープンして、fscanf文でデータを入力していくのですが、 ファイルの数が1000個ほどありまして、 ファイル名が abc001.txt abc002.txt abc003.txt ・ ・ abc100.txt のように一部だけ変わっているだけなんです。 すべてのファイル名を何回も記述するのはめんどうなので、簡単に出来る方法がありましたら、教えて欲しいです。 if((fp = fopen("abc001.txt","r"))!=NULL) { while(fscanf(fp,"%lf,%lf\n",&index[n][0],&index[n][1])!=EOF) ・ ・ ・ ・

  • ファイルの書き込みについて

    ファイルの書き込みに関する質問です。 下のコードでは、 3行目「$ptr=fopen("kekka.txt", "w"); //ファイルを開く」 に問題があるというエラーが出ます。 しかし、文法的には問題はないと思うのですが・・・。 サーバーには、"kekka.txt"というファイルが置いてあります。 何かアドバイスがありましたら、よろしくお願いいたします。 <?php $x = "こんにちは";  $ptr=fopen("kekka.txt", "w");   //ファイルを開く    flock($ptr, LOCK_EX);      //ファイルをロックする      fputs($ptr, $x);      //書込む    flock($ptr, LOCK_UN);       //ロックを解除する  fclose($ptr);            //ファイルを閉じる ?>

    • ベストアンサー
    • PHP
  • ファイルのアクセス権を得る

    a.txt が書き込み許可のオプション付きで fopen("a.txt", "w"); できるかを知るなど、指定したファイルがどのオープン モードに対応できるかを知る方法を教えてください。

  • リストを読み込んでファイル名を書換るバッチファイル

    バッチファイル(test.bat)で、 変更前のファイル名が1行に1つずつ書かれたテキストファイル1(no1.txt)と 変更後のファイル名が1行に1つずつ書かれたテキストファイル2(no2.txt) を読み込んで、 no1.txtのn行目のファイル名のファイルを、 no2.txtのn行目のファイル名に書き換える バッチファイルを作りたいのですが、 (n=1,2,3,4…行数) どのように記述すればよいでしょうか。 具体的には、 フォルダAに 123.txt 456.txt 789.txt というファイルが入っていたとして、 no1.txtのファイルには、 123.txt 456.txt 789.txt no2.txtのファイルには、 ABC.txt DEF.txt GHI.txt が書かれていて、 test.batを実行すると、 フォルダAの中のファイル名が 123.txt => ABC.txt 456.txt => DEF.txt 789.txt => GHI.txt というようにリネームされるようにしたいです。 よろしくお願いします。(Windows10)

  • ファイル処理でのファイル指定の仕方

    今授業でC言語の勉強をしているのですが、ファイル処理の所でよく分からない箇所がでてきました。 教科書の例題のプログラムの一部なんですが、 if((fp=fopen("b:abc.txt","w"))==NULL){ printf("File not open\n"); exit(1); } というのがあり、隣に解説として「b:abc.txtはbドライブにあるabc.txtを指定」みたいなことが書かれていました。 なるほどなあと思い、実際にbドライブにabc.txtをつくってプログラムを実行させてみたところ、きちんと動作することが確認できました。 何が分からないのかというと、もし先ほどのabc.txtがどこかのフォルダ、例えばCドライブのなかのAAAフォルダのなかのBBBフォルダの中に保存されていたとすれば、どのようにabc.txtを指定すればいいのかということです。 つまり、さきほどはb:abc.txtと書いてた部分をどのように書き直せばいいのかという事です。 たぶんかなり初心者的な質問でしょうが、よろしくお願いします。

  • 外部ファイル操作について

    外部ファイルへの入出力のやり方についてアドバイスお願いします。 外部ファイルは 書き込み専用(Sample.txtの内容を書き込む)のファイル「Test.txt」と 書き込む内容を記載してあるファイル「Sample_01.txt」と「Sample_02.txt」の2種類を用意しておきます。 「Sample_01.txt」には 1.おはよう 2.こんにちは 3.こんばんは Sample_02.txt」には 1.いただきます 2.ごちようさま 「Test.txt」の1行目には 【Sampleテキストの内容】 という文字列をそれぞれ初めから記載しておきます。 ファイルの読み込み・書き込みにおいて、「Test.txt」に1行目(【Sampleテキストの内容】 )を消さずに読み込み・書き込みするにはどうしたらよいのでしょうか。 また、「Test.txt」に1行目に【Sampleテキストの内容】という文字列が存在するかを判定するにはどうしたらよいのですか。 お手数ですが、アドバイスお願いします。 出力はDOS画面に行います。

    • ベストアンサー
    • Java
  • ファイルの書込みができません 教えてください

    今 ファイルの書き込みを作成しているのですが。以下のプログラムではテキストの方に書き出しされません。何処が悪いのかわかりません。 わかる方教えてください。 <html> <head> <title>file2</title> <meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS"> </head> <body> <?php $file_name="file2.txt"; $fh=fopen($file_name,"w+"); fwrite($fh,"1行目です?n2行目です"); fclose($fh); print "ファイルの書込完了"; ?> </body> </html> ファイルの書込完了とはでるのですが。

    • ベストアンサー
    • PHP
  • テキストファイル内の任意の単語を含む一行を削除させたい

    メインのテキストファイルを別のテキストファイルに記述されたキーワードに合致する行を削除したいのです。 例:honbun.txtの内容が むかしむかし、あるところに お爺さんと お婆さんが 住んでいました。 ある日、お爺さんは 山へ芝刈りに キーワードリスト:key.txt が むかし お爺さん 芝刈り である時、結果を result.txt に書き出すとして お婆さんが 住んでいました。 という結果を導きたいのです。 コマンド処理をしたいので、プログラム名を ABC.exeと仮定して >abc.exe honbun.txt key.txt result.txt のようなコマンドラインで処理できるようなプログラムを考えています。 オーサリングツールとしてVC++.net があるのですが、あいにくプログラミングの知識が乏しいため、こんな簡単なプログラムも出来ません。 どなたかお力添えいただければ幸いです。

  • 【Access97】txtファイルの一括インポート

    txtファイルをAccessへ自動でインポートする方法としてはマクロの”テキスト変換”しか知識がありません。 今回そのtxtファイルが1000個以上あり、一回一回txtファイル名を変えての”テキスト変換”では膨大な時間がかかってしまいます。 ファイル名はすべて「数字4桁.txt」で統一、1つのフォルダ内に保存してありますので、この条件でAccessへ一度に取り込む方法があればご教授ください。 <txtファイル:ヘッダーなし、1ファイルにつき1~100行程度のデータ> 001,"トウキヨウ","東京" 002,"オオサカ","大阪" 003,"ナゴヤ","名古屋" 004,"フクオカ","福岡"   ・   ・   ・ <Accessテーブル:フィールド名はtxtデータの並び順に合わせて作成> ─── ──── ─── 番号   支店カナ 支店名 ─── ──── ───