2016-08-31 4 views
-1

を使用して、テキストファイル内の特定の行を削除するには:どのように私はそれを検索した後、テキストファイルにその行を削除したいCプログラミング言語

例:

char *id; //id to search 
char buf[1024]; 

FILE *fp=fopen("abc.txt","r"); 

while (fgets(buf,sizeof(buf),fp)!=NULL) 
{ 
    if(strstr(buf,id)!=NULL) 

     {printf("%s\n",buf); } 

} 
+1

なぜあなたは_that_ファイル自体で削除しますか?必要な行で新しいファイルを作成できないのはなぜですか? –

+0

[This](http://stackoverflow.com/a/15759017/3970360)はあなたのシチュエーションに役立つかもしれません。 –

+0

あなたのコードはそのまま大丈夫です。どうしたの?あなたが望むことはしませんか? –

答えて

1

がファイルのサイズに応じて、基本的には2つのソリューションです:

  1. 適度に小さいファイルの場合、ファイル全体をメモリに読み込むことができます。削除する行を除いて、ファイルを再作成して書き出します。

  2. 元のファイルから1行ずつ読みます。削除したい行以外のすべての行を新しい一時ファイルに書き込みます。一時ファイルの名前を元のファイルの名前に変更します。ファイルサイズはここでは重要ではありません(速度以外)。

方法1は大きな欠点があります。エラー(あなたのコードのバグ、システムがダウンした、または他の問題)がある場合は内容がすべて書かれていない可能性がありますし、データを失う恐れがあります。通常は方法1が速くなり、簡単な方法でさまざまな種類のデータ変換を行うことができます。

関連する問題