Используя вспомогательный файл 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)).