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

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

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

Задания: Есть файл, в котором записаны числа массива написать функцию, которая считывает данный файл и перезаписывает данный файл таким образом, чтобы там не было отрицательных чисел. У меня не выходит записать без отрицательных цыфр. Подскажите как это сделать Мое решение:
Листинг программы
  1. void Ex()
  2. {
  3. FILE* fileInput = fopen("D:\\file.txt", "r");
  4. if (fileInput == nullptr)
  5. return;
  6. FILE* fileOutput = fopen("D:\\file.txt", "w");
  7. if (fileOutput == nullptr)
  8. {
  9. fclose(fileInput);
  10. return;
  11. }
  12. while (true)
  13. {
  14. int ch = fgetc(fileInput);
  15. if (ch == EOF)
  16. break;
  17. else
  18. fputc(ch, fileOutput);
  19. }
  20. fclose(fileOutput);
  21. fclose(fileInput);
  22. }
  23. int main()
  24. {
  25. Ex();
  26. return 0;
  27. }

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

textual
Листинг программы
  1. void Ex()
  2. {
  3.     FILE* fileInput = fopen("D:\\file4.txt", "r");
  4.     if (fileInput == nullptr)
  5.         return;
  6.     int number = 0;
  7.     int* array = (int*)malloc((sizeof(array) / sizeof(int)) * sizeof(int));
  8.     while (true)
  9.     {
  10.         int number;
  11.         if (fscanf(fileInput, "%d", &number) == EOF)
  12.             break;
  13.         else
  14.         {
  15.             printf("Read number: %d", number);
  16.         }
  17.     }
  18.     fclose(fileInput);
  19.     FILE* fileOutput = fopen("D:\\file4.txt", "w");
  20.     if (fileOutput == nullptr)
  21.     {
  22.         fclose(fileInput);
  23.         return;
  24.     }
  25.     while (number > 0)
  26.     {
  27.         ++number;
  28.         printf("%d", array[number]);
  29.     }
  30.     fclose(fileOutput);
  31.     fclose(fileInput);
  32. }
  33.  
  34. int main()
  35. {
  36.     Ex();
  37.    
  38.     return 0;
  39. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы