Используя вспомогательный файл H, переписать компоненты файла F в файл G - C (СИ)
Формулировка задачи:
Дан файл F, содержащий целые числа. Никакая из компонент файла не равна нулю. Файл F содержит столько же отрицательных чисел, сколько положительных.
Используя вспомогательный файл H
, переписать компоненты файла F в файл G так, чтобы в файле G сначала шли положительные, потом отрицательные числа. Не получается скомпилировать:много ошибок.Помогите пожалуйста. Мои наработки:#include "stdafx.h" #include "stdlib.h" #include "stdio.h" int main() { FILE *f; FILE *h; FILE *g; int a; if ((f=fopen("data1.txt", "r"))==NULL) printf("Файл f открыть не удалось!\n"); exit(1); if ((h=fopen("data2.txt", "w"))==NULL) printf("Файл h открыть не удалось!\n"); exit(2); } f=fopen("data1.txt", "r"); fscanf(f, "%d ",&a); while(!feof(f)) { if(a>=0) fprintf(h, "%d ",a); fscanf(f,"%d ", &a); } f=fopen("data1.txt", "r"); fscanf(f, "%d ", &a); while (!feof(f)); { if(a<0) fpintf(h, "%d ", a); fscanf(f,"%d ",&a); } fclose(h); fclose(f); { if(g=fopen("data3.txt", "w")==NULL) printf("файл g открыть не удалось!\n"); exit(3); } h=fopen("data2.txt", "r"); fscanf(h,"%d ",&a); while(!feof(h)) fprintf(g, "%d ", a); fscanf(h, "%d ", &a); fclose(h); fcose(g); return 0; }
Решение задачи: «Используя вспомогательный файл H, переписать компоненты файла F в файл G»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> FILE* Open(const char* name, const char* args) { FILE* f = (name == NULL) ? tmpfile() : fopen(name, args); if (f == NULL) { perror(name); exit(EXIT_FAILURE); } return f; } int main() { const char CSourceFile[] = "source.txt"; const char CResultFile[] = "result.txt"; FILE* fsrc = Open(CSourceFile, "r"); FILE* fdest = Open(CResultFile, "w"); FILE* ftmp = Open(NULL, NULL); int value; while ((fscanf(fsrc, "%d", &value)) == 1) { if (value < 0) { fprintf(ftmp, "%d ", value); } else { fprintf(fdest, "%d ", value); } } rewind(ftmp); while ((fscanf(ftmp, "%d", &value)) == 1) { fprintf(fdest, "%d ", value); } fclose(fsrc); fclose(fdest); fclose(ftmp); return EXIT_SUCCESS; }
Объяснение кода листинга программы
- Создание файла с именем
source.txt
и содержимым, представляющим собой последовательность целых чисел, каждое из которых отделено пробелом. - Создание файла с именем
result.txt
и открытым доступом для записи. - Создание временного файла с помощью функции tmpfile().
- Чтение из файла
source.txt
и запись в файлresult.txt
всех целых чисел, которые меньше нуля. - Чтение из временного файла и запись в файл
result.txt
всех целых чисел, которые были записаны в него в предыдущем цикле. - Закрытие всех открытых файлов.
- Завершение работы программы с кодом EXIT_SUCCESS.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д