Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void rle( FILE* src, FILE* dest)
- {
- int i=0;
- int b=0;
- char file1;
- int brojac;
- while(fscanf(src, "%c", &file1) != EOF) // gleda koliko elemenata ima taj file
- {
- i+=1; // broj elemenata
- }
- brojac=i; //stavlja brojac na tu vrijednost
- i=0;
- rewind(src); //vraca pointer na pocetak file-a
- char rijec[brojac]; //u to ce ucitat string iz filea
- int num[brojac]; //koliko kojeg elementa ima
- char slovo[brojac]; //koji element kojeg ce biti koliko
- while(fscanf(src, "%c", &rijec[i]) != EOF) //ucitavanje stringa
- i+=1;
- for(i=0; i<brojac; i++) //stavlja pocetne vrijednosti numa na 1
- num[i]=1;
- i=0;
- while(i<brojac)
- {
- slovo[b]=rijec[i]; // stavi slovo na slovo od stringa
- while (rijec[i]==rijec[i+1]) // ako je sljedece slovo jednako sadasnjem dodaje vrijednost polju za taj element i ide na sljedece slovo stringa
- {
- num[b]+=1;
- i+=1;
- }
- if(rijec[i]!=rijec[i+1]) // ako nije to jednako onda u novi file printa onako kako trazi, prvo koje je slovo a drugo koliko puta se ponavlja
- {
- fprintf(dest, "%d%c", num[b], slovo[b]);
- b+=1;
- i+=1;
- }
- }
- }
- int main( int argc, char** argv )
- {
- FILE* src;
- FILE* dest;
- src = fopen(argv[1],"r"); if( !src )exit(1);
- dest= fopen(argv[2],"w"); if( !dest )exit(1);
- rle(src,dest);
- fclose(dest);
- fclose(src);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement