Записать данные из одного файла в другой - 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);
Объяснение кода листинга программы
- Объявлена переменная типа int
n
. - В цикле while считываются числа из файла
ifp
в переменнуюn
с помощью функцииfscanf
. Условие цикла - результат сравненияfscanf
с 1. - Внутри цикла проверяется условие
n > 0
. Если оно истинно, то числоn
записывается в файлofp
с помощью функцииfprintf
. Отступ в 4 пробела используется для форматирования записи. - После завершения первого цикла, файл
ifp
сбрасывается в начало с помощью функцииrewind
. - Во втором цикле while считываются числа из файла
ifp
в переменнуюn
с помощью функцииfscanf
. Условие цикла - результат сравненияfscanf
с 1. - Внутри цикла проверяется условие
n < 0
. Если оно истинно, то числоn
записывается в файлofp
с помощью функцииfprintf
. Отступ в 4 пробела используется для форматирования записи.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д