Функция, которая считывает данный файл и перезаписывает его без отрицательных чисел - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задания: Есть файл, в котором записаны числа массива написать функцию, которая считывает данный файл и перезаписывает данный файл таким образом, чтобы там не было отрицательных чисел. У меня не выходит записать без отрицательных цыфр. Подскажите как это сделать Мое решение:
void Ex()
{
    FILE* fileInput = fopen("D:\\file.txt", "r");
    if (fileInput == nullptr)
        return;
    FILE* fileOutput = fopen("D:\\file.txt", "w");
    if (fileOutput == nullptr)
    {
        fclose(fileInput);
        return;
    }
 
    while (true)
    {
        int ch = fgetc(fileInput);
        if (ch == EOF)
            break;
        else
            fputc(ch, fileOutput);
    }
 
    fclose(fileOutput);
    fclose(fileInput);
}
 
int main()
{
    Ex();
    return 0;
}

Решение задачи: «Функция, которая считывает данный файл и перезаписывает его без отрицательных чисел»

textual
Листинг программы
void Ex()
{
    FILE* fileInput = fopen("D:\\file4.txt", "r");
    if (fileInput == nullptr)
        return;
    int number = 0;
    int* array = (int*)malloc((sizeof(array) / sizeof(int)) * sizeof(int));
    while (true)
    {
        int number;
        if (fscanf(fileInput, "%d", &number) == EOF)
            break;
        else
        {
            printf("Read number: %d", number);
        }
    }
    fclose(fileInput);
    FILE* fileOutput = fopen("D:\\file4.txt", "w");
    if (fileOutput == nullptr)
    {
        fclose(fileInput);
        return;
    }
    while (number > 0)
    {
        ++number;
        printf("%d", array[number]);
    }
    fclose(fileOutput);
    fclose(fileInput);
}
 
int main()
{
    Ex();
    
    return 0;
}

Объяснение кода листинга программы

  1. Объявлена функция Ex().
  2. В функции Ex() открывается файл file4.txt для чтения с помощью fopen(D:\file4.txt,r).
  3. Выделяется память под массив целых чисел с помощью malloc((sizeof(array) / sizeof(int)) * sizeof(int)).
  4. Запускается бесконечный цикл, в котором считывается каждое число из файла с помощью fscanf(fileInput,%d, &number).
  5. Если число равно EOF, то цикл прерывается.
  6. Число выводится на экран с помощью printf(Read number: %d, number).
  7. Закрывается файл fileInput с помощью fclose(fileInput).
  8. Открывается файл file4.txt для записи с помощью fopen(D:\file4.txt,w).
  9. Если файл не удалось открыть, то закрывается файл fileInput и возвращается значение EOF.
  10. Запускается цикл, в котором числа из массива выводятся на экран с помощью printf(%d, array[number]).
  11. Увеличивается значение переменной number на 1 с помощью ++number.
  12. Функция Ex() возвращает 0.
  13. В функции main() вызывается функция Ex().
  14. Возвращается значение 0.
  15. Программа завершается.

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


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

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

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