Advertisement
niromru

pr7-3 Программа обработки

Dec 17th, 2021
955
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.49 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <windows.h>
  5. #define maxStrLen 1024
  6.  
  7. void processing(char*);
  8. void reading(char*);
  9.  
  10. int main(int argc, char **argv)
  11. {
  12.     SetConsoleCP(1251);
  13.     SetConsoleOutputCP(1251);
  14.  
  15.     int c = 0;
  16.     char filenameInp[maxStrLen] = "";
  17.  
  18.     if (argc == 1) {
  19.         printf("Введите имя входного бинарного файла:\n");
  20.         gets(filenameInp);
  21.         system("CLS");
  22.     } else if (argc == 2) {
  23.         strcpy(filenameInp, argv[1]);
  24.     } else {
  25.         printf("[!] Программе переданы лишние аргументы\n\nВведите <0>, чтобы завершить выполнение программы.\nВведите любое другое значение, чтобы продолжить выполнение программы.\n");
  26.         fflush(stdin);
  27.         c = getchar();
  28.         if (c == '0')
  29.             return 1;
  30.         system("CLS");
  31.         strcpy(filenameInp, argv[1]);
  32.     }
  33.  
  34.     reading(filenameInp);
  35.     processing(filenameInp);
  36.     reading(filenameInp);
  37.     return 0;
  38. }
  39.  
  40. void processing(char *filenameInp) {
  41.     double t = 0;
  42.     double countDelete = 0;
  43.     FILE * fInp = NULL;
  44.     FILE * fTmp = NULL;
  45.  
  46.     if ((fInp = fopen(filenameInp, "rb")) == NULL) {
  47.         perror("[!] Ошибка открытия входного бинарного файла");
  48.         getchar();
  49.         return;
  50.     }
  51.     if ((fTmp = fopen("temp.bin", "wb")) == NULL) {
  52.         perror("[!] Ошибка создания временного бинарного файла");
  53.         getchar();
  54.         return;
  55.     }
  56.  
  57.     while (fread(&t, sizeof(double), 1, fInp)) {
  58.         if (t >= 0)
  59.             fwrite(&t, sizeof(double), 1, fTmp);
  60.         else
  61.             countDelete++;
  62.     }
  63.     fwrite(&countDelete, sizeof(double), 1, fTmp);
  64.  
  65.     fclose(fInp);
  66.     fclose(fTmp);
  67.     remove(filenameInp);
  68.     rename("temp.bin", filenameInp);
  69.  
  70.     printf("\nФайл обработан!\n\n");
  71. }
  72.  
  73. void reading(char *filenameInp) {
  74.     FILE * fInp = NULL;
  75.     double t = 0;
  76.  
  77.     if ((fInp = fopen(filenameInp, "rb")) == NULL) {
  78.         perror("[!] Ошибка открытия входного бинарного файла");
  79.         getchar();
  80.         return;
  81.     }
  82.  
  83.     printf("Содержимое файла %s: ", filenameInp);
  84.     while (fread(&t, sizeof(double), 1, fInp)) {
  85.         printf("%lf ", t);
  86.     }
  87.     printf("\n");
  88.     fclose(fInp);
  89. }
  90.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement