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

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

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

Здравствуйте. Помогите пожалуйста! Сформировать файл из некоторых чисел. Записать во второй файл все положительные элементы первого, а затем абсолютные величины отрицательных элементов. у меня есть программа, где записывают во второй файл количество положительных, отрицательных и нулевых элементов. Помогите переделать.
   #include<stdio.h> 
    #include<conio.h>
    #define N 6 
    void main(void) 
        { 
          
            FILE *f1; // Указатель на первый файл 
            FILE *f2; // Указатель на второй файл 
            int mas[N]; // Массив, элементами которого заполняется первый файл 
            int i, buf, nul, otr, pol; // i - переменная счетчика цикла 
            // buf - переменная, в которую будут 
            // считыватся значения из первого файла 
            // pol, otr, nul - переменные количества 
            // положительных, отрицательных и нулевых 
            // элементов первого файла соответственно 
            clrscr(); // Очистка экрана 
      
            // Заполнение массива 
            for(i=0; i<N; i++) 
                { 
                    printf("Введите %i элемент массива: ", i); 
                    scanf("%i", &mas[i]); // Ввод элементов массива 
                } 
            // Создание в текущем каталоге файлов с именами file1 и file2 
            // и открытие их на запись 
            f1=fopen("file1","w+"); 
            f2=fopen("file2","w+"); 
            // Запись в файл с именем file1 элементов массива mas[N] 
            for(i=0; i<N; i++) fwrite(&mas[i],1,sizeof(int),f1); 
            fclose(f1); // Закрытие файла file1 
            pol=0; // Присвоение начального значения переменным 
            otr=0; // количества положительных, отрицательных и 
            nul=0; // нулевых элементов 
      
            fopen("file1","r+"); 
       
            while(fread(&buf,sizeof(int),1,f1)!=0) 
                { 
              
                   if(buf>0) pol=pol+1; 
     
                   if(buf<0) otr=otr+1; 
       
                   if(buf==0) nul=nul+1; 
                } 
       
            fprintf(f2,"В ПЕРВОМ ФАЙЛЕ СОДЕРЖИТСЯ:\n"); 
            fprintf(f2,"\nположительных элементов: %i", pol); 
            fprintf(f2,"\nотрицательных элементов: %i", otr); 
            fprintf(f2,"\nнулевых элементов: %i", nul);  
            printf("РАБОТА С ФАЙЛАМИ ЗАВЕРШЕНА"); 
            printf("\nНажмите любую клавишу"); 
            getch(); 
        }

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

textual
Листинг программы
    int n;
    
    while (fscanf(ifp, "%d", &n) == 1)
        if (n > 0)
            fprintf(ofp, " %d", n);
    rewind(ifp);
    while (fscanf(ifp, "%d", &n) == 1)
        if (n < 0)
            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
Похожие ответы