Написать функцию remove(), которая будет удалять i-тую строку из файла - C (СИ)
Формулировка задачи:
Доброго времени суток!)
есть задача, вызвавшая затруднение...необходимо написать функцию remove(), которая будет удалять i-тую строку из файла при выведении его на экран...если кто может помогите)
ну помогите(
Решение задачи: «Написать функцию remove(), которая будет удалять i-тую строку из файла»
textual
Листинг программы
#include <stdio.h> #include <math.h> #include <stdlib.h> #define MAX_SIZE 1024 #define ERR_OPEN_FILE 1 void RemoveString(FILE *fp, unsigned int k) { int i = 0; char buf[MAX_SIZE]; while(fgets(buf, MAX_SIZE, fp) != NULL){ if(++i != k) printf(buf); } } int main(void) { FILE *fp; char fileName[MAX_SIZE]; printf("please enter name of file: "); scanf("%s", fileName); fp = fopen(fileName,"rb+"); if(!fp) exit(ERR_OPEN_FILE); RemoveString(fp, 4); fclose(fp); return 0; }
Объяснение кода листинга программы
В этом коде реализована функция удаления i-й строки из файла.
- #include
, #include , #include - включение необходимых для работы функций и структур данных. - #define MAX_SIZE 1024 - определение максимального размера буфера.
- #define ERR_OPEN_FILE 1 - определение кода ошибки при открытии файла.
- *void RemoveString(FILE fp, unsigned int k)** - объявление функции удаления строки с параметрами: файл, номер строки.
- int main(void) - объявление точки входа в программу.
- *FILE fp;, char fileName[MAX_SIZE];** - объявление переменных для работы с файлами.
- printf(
please enter name of file:
);, scanf(%s
, fileName); - запрос имени файла у пользователя. - fp = fopen(fileName,
rb+
); - открытие файла для чтения и записи. - if(!fp) exit(ERR_OPEN_FILE); - проверка на успешное открытие файла.
- RemoveString(fp, 4); - вызов функции удаления 4-й строки.
- fclose(fp); - закрытие файла.
- return 0; - завершение программы.
В функции
RemoveString
выполняется следующее: - int i = 0;, char buf[MAX_SIZE]; - объявление переменных для чтения файла.
- while(fgets(buf, MAX_SIZE, fp) != NULL) - чтение строк из файла до тех пор, пока не будет достигнут конец файла.
- if(++i != k) printf(buf); - вывод строки, если её номер не равен k. Таким образом, данный код открывает файл, удаляет из него 4-ю строку и закрывает файл.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д