Записать данные из одного файла в другой - C (СИ)

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

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

Здравствуйте. Помогите пожалуйста! Сформировать файл из некоторых чисел. Записать во второй файл все положительные элементы первого, а затем абсолютные величины отрицательных элементов. у меня есть программа, где записывают во второй файл количество положительных, отрицательных и нулевых элементов. Помогите переделать.
Листинг программы
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #define N 6
  4. void main(void)
  5. {
  6. FILE *f1; // Указатель на первый файл
  7. FILE *f2; // Указатель на второй файл
  8. int mas[N]; // Массив, элементами которого заполняется первый файл
  9. int i, buf, nul, otr, pol; // i - переменная счетчика цикла
  10. // buf - переменная, в которую будут
  11. // считыватся значения из первого файла
  12. // pol, otr, nul - переменные количества
  13. // положительных, отрицательных и нулевых
  14. // элементов первого файла соответственно
  15. clrscr(); // Очистка экрана
  16. // Заполнение массива
  17. for(i=0; i<N; i++)
  18. {
  19. printf("Введите %i элемент массива: ", i);
  20. scanf("%i", &mas[i]); // Ввод элементов массива
  21. }
  22. // Создание в текущем каталоге файлов с именами file1 и file2
  23. // и открытие их на запись
  24. f1=fopen("file1","w+");
  25. f2=fopen("file2","w+");
  26. // Запись в файл с именем file1 элементов массива mas[N]
  27. for(i=0; i<N; i++) fwrite(&mas[i],1,sizeof(int),f1);
  28. fclose(f1); // Закрытие файла file1
  29. pol=0; // Присвоение начального значения переменным
  30. otr=0; // количества положительных, отрицательных и
  31. nul=0; // нулевых элементов
  32. fopen("file1","r+");
  33. while(fread(&buf,sizeof(int),1,f1)!=0)
  34. {
  35. if(buf>0) pol=pol+1;
  36. if(buf<0) otr=otr+1;
  37. if(buf==0) nul=nul+1;
  38. }
  39. fprintf(f2,"В ПЕРВОМ ФАЙЛЕ СОДЕРЖИТСЯ:\n");
  40. fprintf(f2,"\nположительных элементов: %i", pol);
  41. fprintf(f2,"\nотрицательных элементов: %i", otr);
  42. fprintf(f2,"\nнулевых элементов: %i", nul);
  43. printf("РАБОТА С ФАЙЛАМИ ЗАВЕРШЕНА");
  44. printf("\nНажмите любую клавишу");
  45. getch();
  46. }

Решение задачи: «Записать данные из одного файла в другой»

textual
Листинг программы
  1.     int n;
  2.    
  3.     while (fscanf(ifp, "%d", &n) == 1)
  4.         if (n > 0)
  5.             fprintf(ofp, " %d", n);
  6.     rewind(ifp);
  7.     while (fscanf(ifp, "%d", &n) == 1)
  8.         if (n < 0)
  9.             fprintf(ofp, " %d", -n);

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

  1. Объявлена переменная типа int n.
  2. В цикле while считываются числа из файла ifp в переменную n с помощью функции fscanf. Условие цикла - результат сравнения fscanf с 1.
  3. Внутри цикла проверяется условие n > 0. Если оно истинно, то число n записывается в файл ofp с помощью функции fprintf. Отступ в 4 пробела используется для форматирования записи.
  4. После завершения первого цикла, файл ifp сбрасывается в начало с помощью функции rewind.
  5. Во втором цикле while считываются числа из файла ifp в переменную n с помощью функции fscanf. Условие цикла - результат сравнения fscanf с 1.
  6. Внутри цикла проверяется условие n < 0. Если оно истинно, то число n записывается в файл ofp с помощью функции fprintf. Отступ в 4 пробела используется для форматирования записи.

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


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

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

15   голосов , оценка 4.133 из 5

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

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

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