2016-08-31 1 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

[Это] (http://stackoverflow.com/a/15759017/3970360) может быть полезно для вашего ситутации. –

+0

Ваш код выглядит почти прекрасным, как есть. Что с этим не так? Разве это не делает то, что вы хотите? –

ответ

1

В зависимости от размера файла там являются в основном двумя решениями:

  1. Для умеренно малого файла вы можете прочитать весь файл в памяти. Восстановите файл и запишите его, за исключением строки, которую вы хотите удалить.

  2. Прочтите, строковое обозначение, из исходного файла. Напишите все строки, кроме тех, которые вы хотите удалить, в новый временный файл. Переименуйте временный файл в качестве исходного файла. Размер файла здесь не имеет значения (кроме скорости).

Метод 1 имеет большой недостаток: если есть ошибка (ошибка в коде, система выходит из строя, или другая проблема) содержание не может все быть написано, и вы можете потерять данные. Метод 1 обычно выполняется быстрее, и он позволяет сделать множество преобразований данных простым способом.

Смежные вопросы