Как удалить строку в файле - 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, которая удаляет строку из файла.

  1. Строка, которую необходимо удалить, передается в функцию в качестве аргумента типа const char*.
  2. В функции создается указатель на файл, который открывается для чтения.
  3. Затем определяется размер буфера, который будет использоваться для чтения данных из файла.
  4. Вспомогательный указатель инициализируется нулевой строкой, а основной указатель - на начало буфера.
  5. В цикле while считываются строки из файла.
  6. Если текущая строка не совпадает со строкой, которую необходимо удалить, она добавляется к основной строке, а указатель сдвигается на длину этой строки.
  7. После чтения всех строк файл закрывается, открывается для записи и записывается в него измененная строка.
  8. После завершения работы с файлом он закрывается, а выделенная память освобождается. В функции main() вызывается функция DeleteString с аргументом test\n, что приведет к удалению всех строк из файла, которые содержат test\n.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы