Как удалить строку в файле - C (СИ)
Формулировка задачи:
Подскажите пожалуйста, как на языке Си удалить строку и итог записать в файл? Очень нужно
Решение задачи: «Как удалить строку в файле»
textual
Листинг программы
#include "string.h" #include "stdio.h" void DeleteString (const char* st) { if ( FILE * f = fopen ("file.txt","r") ) { const int size = 1024; char pattern [size]; fseek (f,0,SEEK_END); char * storyData = new char [ftell (f)+1]; char * ptr = storyData; *ptr = 0; fseek (f,0,SEEK_SET); while ( fgets (pattern,size,f) ) { if ( strcmp (st,pattern) != 0 ) { strcat (ptr,pattern); ptr += strlen (pattern); } } fclose (f); f = fopen ("file.txt","w"); fputs (storyData,f); fclose (f); delete [] storyData; } } int main() { DeleteString ("test\n"); }
Объяснение кода листинга программы
В этом коде реализована функция DeleteString, которая удаляет строку из файла.
- Строка, которую необходимо удалить, передается в функцию в качестве аргумента типа const char*.
- В функции создается указатель на файл, который открывается для чтения.
- Затем определяется размер буфера, который будет использоваться для чтения данных из файла.
- Вспомогательный указатель инициализируется нулевой строкой, а основной указатель - на начало буфера.
- В цикле while считываются строки из файла.
- Если текущая строка не совпадает со строкой, которую необходимо удалить, она добавляется к основной строке, а указатель сдвигается на длину этой строки.
- После чтения всех строк файл закрывается, открывается для записи и записывается в него измененная строка.
- После завершения работы с файлом он закрывается, а выделенная память освобождается.
В функции main() вызывается функция DeleteString с аргументом
test\n
, что приведет к удалению всех строк из файла, которые содержатtest\n
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д