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

  1. #include , #include , #include - включение необходимых для работы функций и структур данных.
  2. #define MAX_SIZE 1024 - определение максимального размера буфера.
  3. #define ERR_OPEN_FILE 1 - определение кода ошибки при открытии файла.
  4. *void RemoveString(FILE fp, unsigned int k)** - объявление функции удаления строки с параметрами: файл, номер строки.
  5. int main(void) - объявление точки входа в программу.
  6. *FILE fp;, char fileName[MAX_SIZE];** - объявление переменных для работы с файлами.
  7. printf(please enter name of file:);, scanf(%s, fileName); - запрос имени файла у пользователя.
  8. fp = fopen(fileName,rb+); - открытие файла для чтения и записи.
  9. if(!fp) exit(ERR_OPEN_FILE); - проверка на успешное открытие файла.
  10. RemoveString(fp, 4); - вызов функции удаления 4-й строки.
  11. fclose(fp); - закрытие файла.
  12. return 0; - завершение программы. В функции RemoveString выполняется следующее:
  13. int i = 0;, char buf[MAX_SIZE]; - объявление переменных для чтения файла.
  14. while(fgets(buf, MAX_SIZE, fp) != NULL) - чтение строк из файла до тех пор, пока не будет достигнут конец файла.
  15. if(++i != k) printf(buf); - вывод строки, если её номер не равен k. Таким образом, данный код открывает файл, удаляет из него 4-ю строку и закрывает файл.

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


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

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

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