Используя вспомогательный файл H, записать компоненты файла F в файл G - C (СИ)
Формулировка задачи:
Дан файл F,компоненты которого являются целыми числами. Никакая из компонент файла не равна нулю. Файл F содержит столько же отрицательных чисел, сколько положительных. Используя вспомогательный файл H, записать компоненты файла F в файл G так, чтобы в файле G не было двух соседних чисел с одним знаком.
Подскажите, что нужно добавить?
#include <stdio.h> #include <conio.h> #define SIZE 5 //количество пар "+/-" int main() { int i,n,z; FILE*F; FILE*G; FILE*H; printf("Начальный файл\n"); F=fopen("fileF.dat","w"); int c[10]={-8,10,3,5,-1,-9,7,-4,6,-5}; for(i=0;i<2*SIZE;i++) fprintf(F,"%d",c[i]); fclose(F); F=fopen("fileF.dat","r"); G=fopen("fileG.dat","w"); H=fopen("fileH.dat","w"); while(!feof(F)) { fscanf(F,"%d",&n); if(n>0) {fprintf(G,"%d",n); z=0; fprintf(G,"%d",z); } else fprintf(H,"%d",n); } fclose(F); fclose(G); fclose(H);
Решение задачи: «Используя вспомогательный файл H, записать компоненты файла F в файл G»
textual
Листинг программы
F=fopen("fileF.dat","r"); H=fopen("fileH.dat","w"); while(!feof(F)) { fscanf(F,"%d",&n); if(n>0) fprintf(H,"%d\n",n); } fclose(H); fclose(F);
Объяснение кода листинга программы
- Программа открывает файл
fileF.dat
для чтения (режимr
). - Программа открывает файл
fileH.dat
для записи (режимw
). - Программа использует цикл while для чтения данных из файла
fileF.dat
до тех пор, пока не достигнет конца файла (feof(F)). - Внутри цикла программа считывает число из файла
fileF.dat
с помощью функции fscanf и сохраняет его в переменной типа int n. - Если считанное число больше нуля, программа записывает его в файл
fileH.dat
с помощью функции fprintf. - Каждое число записывается на новой строке (символ перевода строки
\n
). - После окончания цикла программа закрывает файл
fileH.dat
. - После окончания работы программы файл
fileF.dat
автоматически закрывается (fclose(F)).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д