Advertisement
yurdmitriev

Untitled

Apr 8th, 2020
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.56 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4.  
  5. void fillFile(char *, FILE *); // заполнение файла числами типа float
  6. void parseFiles(FILE *, FILE *); // обработка содержимого файлов
  7. void catFile(char * filename); // вывод содержимого файла
  8.  
  9. int main()
  10. {
  11.     setlocale(0,"");
  12.  
  13.     FILE *A,*B; // переменные файлов А и В
  14.  
  15.     fillFile("A.txt", A); // заполняем файл А
  16.     fillFile("B.txt", B); // заполняем файл В
  17.  
  18.     parseFiles(A,B); // обработка собдержимого файлов А и В
  19.  
  20.     catFile("C.txt"); // вывод содержимого файла С в консоль
  21.  
  22.     return 0;
  23. }
  24.  
  25. void catFile(char *filename)
  26. {
  27.     FILE *f = fopen(filename, "r"); // открываем файл
  28.     float buf; // временный буфер
  29.     printf("Содержимое файла %s: ", filename);
  30.     while ((fscanf(f, "%f", &buf)) != EOF) // читаем все числа типа float пока не закончится файл
  31.         printf("%.2f ", buf); // и выводим в консоль содержимое буфера
  32.     fclose(f); // закрываем его
  33. }
  34.  
  35. void fillFile(char * filename, FILE * file)
  36. {
  37.     file = fopen(filename, "w+"); // открываем файл
  38.     printf("Вводите содержимое файла %s\n(через пробел, отделять целую и дробную части через запятую, закончить набор клавишей ENTER):\n", filename);
  39.  
  40.     do
  41.     {
  42.         float temp; // временный буфер
  43.         scanf("%f", &temp); // вносим число в переменную
  44.         fprintf(file, "%f ", temp); // и записываем в файл
  45.     } while(getchar() != '\n'); // и так продолжать, пока не нажат enter
  46.  
  47.     fclose(file); // закрываем файл
  48. }
  49.  
  50. void parseFiles(FILE *fA, FILE *fB)
  51. {
  52.     // открываем файлы
  53.     FILE* C;
  54.     C = fopen("C.txt", "w+"); // этот для записи
  55.     // а эти для чтения
  56.     fA = fopen("A.txt", "r");
  57.     fB = fopen("B.txt", "r");
  58.     float num; // временный буфер
  59.    
  60.     // считываем числа в буфер пока не дошли до конца файла
  61.     while(fscanf(fA, "%f ", &num) != EOF)
  62.     {
  63.         // если число < 0
  64.         if(num < 0)
  65.         {
  66.             // переходим к следующему
  67.             fscanf(fA, "%f ", &num);
  68.             while(num > 0) // и пока число в буфере больше нуля
  69.             {
  70.                 fprintf(C, "%f ", num); // записываем в файл
  71.                 fscanf(fA, "%f ", &num); // и переходим к следующему
  72.             }
  73.         }
  74.     }
  75.    
  76.     // считываем числа в буфер пока не дошли до конца файла
  77.     while(fscanf(fB, "%f ", &num) != EOF)
  78.     {
  79.         // если число < 0
  80.         if(num < 0)
  81.         {
  82.             // переходим к следующему
  83.             fscanf(fB, "%f ", &num);
  84.             while(num > 0) // и пока число в буфере больше нуля
  85.             {
  86.                 fprintf(C, "%f ", num); // записываем в файл
  87.                 fscanf(fB, "%f ", &num); // и переходим к следующему
  88.             }
  89.         }
  90.     }
  91.    
  92.     // И наконец закрываем файлы
  93.     fclose(fA);
  94.     fclose(fB);
  95.     fclose(C);
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement