Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdlib.h>
- #include<stdio.h>
- #include<string.h>
- int main(int argc, char* argv[])
- {
- int n;
- char* podstawa;
- char* rozszerzenie = malloc(5*sizeof(char));
- char* nowaNazwa = malloc(1000*sizeof(char));
- FILE* zrodlo;
- FILE* nowy;
- _Bool czyBinarny = 1;
- if(argc >= 3)
- {
- ///Sprawdzanie czy traktowac plik jako tekstowy
- if(argc>3 && strcmp(argv[3], "-t")==0) czyBinarny = 0;
- ///Wyciaganie nazwy i rozszerzenia pliku
- if(strrchr(argv[1], '.') == NULL){
- rozszerzenie ="";
- podstawa = argv[1];
- }
- else
- {
- rozszerzenie = strcpy(rozszerzenie, strrchr(argv[1], '.'));
- n = strrchr(argv[1], '.')-argv[1];
- if(n<strrchr(argv[1], '/')-argv[1])
- {
- rozszerzenie ="";
- podstawa = argv[1];
- }
- podstawa = malloc((n+1)*sizeof(char));
- podstawa = strncpy(podstawa, argv[1], n);
- }
- ///Na ile podzielic
- n = atoi(argv[2]);
- if(czyBinarny)
- {
- printf("binarny\n");
- }
- else
- {
- zrodlo = fopen(argv[1], "rt");
- ///Liczenie '\n'
- int nl = 0;
- char c;
- while((c = fgetc(zrodlo))!=EOF)
- if(c=='\n') nl++;
- ///powrot na poczatek pliku
- rewind(zrodlo);
- int reszta = nl%n;
- for(int i =0; i<n; i++)
- {
- sprintf(nowaNazwa, "%s-%03d%s", podstawa, i, rozszerzenie);
- nowy = fopen(nowaNazwa, "wt+");
- int j = 1;
- if(i<reszta) j = 0;
- for(; j<=nl/n; j++)
- {
- while((c=fgetc(zrodlo))!=EOF)
- {
- fputc(c,nowy);
- if(c=='\n') break;
- }
- }
- fclose(nowy);
- }
- }
- }
- else
- {
- printf("Bledne polecenie.\n");
- return 1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement