Advertisement
3axap_010

file.cpp

Jun 20th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.56 KB | None | 0 0
  1. // file12.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //в ткствовом файле поменять местами первое и последнее число, второе и предпоследнее и т.д.
  3.  
  4. #include "pch.h"
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. FILE* file_create(const char* filename, const char* mode)
  9. {
  10.     FILE* file = fopen(filename, mode);
  11.     if (!file)
  12.     {
  13.         fprintf(stderr, "Can't open file\n");
  14.         return NULL;
  15.     }
  16.  
  17.     return file;
  18. }
  19.  
  20. void file_fill(FILE* file)
  21. {
  22.     int i;
  23.     do
  24.     {
  25.         fscanf_s(stdin, "%d", &i);
  26.         if (i == 999)
  27.         {
  28.             break;
  29.         }
  30.         fprintf(file, "%3d", i);
  31.     } while (i != 999);
  32. }
  33.  
  34. void file_output(FILE* file)
  35. {
  36.     rewind(file);
  37.  
  38.     int i;
  39.     while (!feof(file))
  40.     {
  41.         fscanf_s(file, "%d", &i);
  42.         fprintf(stdout, "%3d", i);
  43.     }
  44.  
  45.     fprintf(stdout, "\n");
  46. }
  47.  
  48. void file_change(FILE* file)
  49. {
  50.     fpos_t pos1, pos2;
  51.  
  52.     fseek(file, -3, SEEK_END);
  53.     fgetpos(file, &pos2);
  54.  
  55.     rewind(file);
  56.     fgetpos(file, &pos1);
  57.  
  58.     int i, j;
  59.  
  60.     while (pos1 < pos2)
  61.     {
  62.         fsetpos(file, &pos1);
  63.         fscanf_s(file, "%d", &i);
  64.         fsetpos(file, &pos2);
  65.         fscanf_s(file, "%d", &j);
  66.         fsetpos(file, &pos1);
  67.         fprintf(file, "%3d", j);
  68.         fsetpos(file, &pos2);
  69.         fprintf(file, "%3d", i);
  70.         pos2 -= 3;
  71.         pos1 += 3;
  72.     }
  73. }
  74.  
  75. int main()
  76. {
  77.     FILE* file = file_create("text.txt", "w+");
  78.  
  79.     file_fill(file);
  80.  
  81.     file_output(file);
  82.  
  83.     file_change(file);
  84.  
  85.     file_output(file);
  86.  
  87.     fclose(file);
  88.  
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement