Advertisement
dgulczynski

9_1

Dec 14th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.12 KB | None | 0 0
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4.  
  5. int main(int argc, char* argv[])
  6. {
  7.     int n;
  8.  
  9.     char* podstawa;
  10.     char* rozszerzenie = malloc(5*sizeof(char));
  11.     char* nowaNazwa = malloc(1000*sizeof(char));
  12.  
  13.     FILE* zrodlo;
  14.     FILE* nowy;
  15.  
  16.     _Bool czyBinarny = 1;
  17.  
  18.     if(argc >= 3)
  19.     {
  20.         ///Sprawdzanie czy traktowac plik jako tekstowy
  21.         if(argc>3 && strcmp(argv[3], "-t")==0) czyBinarny = 0;
  22.  
  23.         ///Wyciaganie nazwy i rozszerzenia pliku
  24.         if(strrchr(argv[1], '.') == NULL){
  25.             rozszerzenie ="";
  26.             podstawa = argv[1];
  27.         }
  28.         else
  29.         {
  30.             rozszerzenie = strcpy(rozszerzenie, strrchr(argv[1], '.'));
  31.             n = strrchr(argv[1], '.')-argv[1];
  32.             if(n<strrchr(argv[1], '/')-argv[1])
  33.             {
  34.                 rozszerzenie ="";
  35.                 podstawa = argv[1];
  36.             }
  37.             podstawa = malloc((n+1)*sizeof(char));
  38.             podstawa = strncpy(podstawa, argv[1], n);
  39.         }
  40.  
  41.         ///Na ile podzielic
  42.         n = atoi(argv[2]);
  43.  
  44.  
  45.         if(czyBinarny)
  46.         {
  47.             printf("binarny\n");
  48.  
  49.         }
  50.         else
  51.         {
  52.             zrodlo = fopen(argv[1], "rt");
  53.             ///Liczenie '\n'
  54.             int nl = 0;
  55.             char c;
  56.             while((c = fgetc(zrodlo))!=EOF)
  57.                 if(c=='\n') nl++;
  58.  
  59.             ///powrot na poczatek pliku
  60.             rewind(zrodlo);
  61.  
  62.             int reszta = nl%n;
  63.             for(int i =0; i<n; i++)
  64.             {
  65.                 sprintf(nowaNazwa, "%s-%03d%s", podstawa, i, rozszerzenie);
  66.                 nowy = fopen(nowaNazwa, "wt+");
  67.                 int j = 1;
  68.                 if(i<reszta) j = 0;
  69.  
  70.                 for(; j<=nl/n; j++)
  71.                 {
  72.                     while((c=fgetc(zrodlo))!=EOF)
  73.                     {
  74.                         fputc(c,nowy);
  75.                         if(c=='\n') break;
  76.                     }
  77.                 }
  78.                 fclose(nowy);
  79.  
  80.             }
  81.         }
  82.  
  83.     }
  84.     else
  85.     {
  86.         printf("Bledne polecenie.\n");
  87.         return 1;
  88.     }
  89.  
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement