Написать функцию 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-ю строку и закрывает файл.