Advertisement
Guest User

Untitled

a guest
Nov 30th, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. void rle( FILE* src, FILE* dest)
  5. {
  6.  
  7. int i=0;
  8. int b=0;
  9. char file1;
  10. int brojac;
  11. while(fscanf(src, "%c", &file1) != EOF) // gleda koliko elemenata ima taj file
  12. {
  13. i+=1; // broj elemenata
  14. }
  15.  
  16. brojac=i; //stavlja brojac na tu vrijednost
  17. i=0;
  18. rewind(src); //vraca pointer na pocetak file-a
  19.  
  20.  
  21. char rijec[brojac]; //u to ce ucitat string iz filea
  22. int num[brojac]; //koliko kojeg elementa ima
  23. char slovo[brojac]; //koji element kojeg ce biti koliko
  24.  
  25. while(fscanf(src, "%c", &rijec[i]) != EOF) //ucitavanje stringa
  26. i+=1;
  27.  
  28. for(i=0; i<brojac; i++) //stavlja pocetne vrijednosti numa na 1
  29. num[i]=1;
  30. i=0;
  31.  
  32. while(i<brojac)
  33. {
  34. slovo[b]=rijec[i]; // stavi slovo na slovo od stringa
  35.  
  36. while (rijec[i]==rijec[i+1]) // ako je sljedece slovo jednako sadasnjem dodaje vrijednost polju za taj element i ide na sljedece slovo stringa
  37. {
  38. num[b]+=1;
  39. i+=1;
  40. }
  41.  
  42. 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
  43. {
  44. fprintf(dest, "%d%c", num[b], slovo[b]);
  45. b+=1;
  46. i+=1;
  47. }
  48. }
  49. }
  50.  
  51. int main( int argc, char** argv )
  52. {
  53. FILE* src;
  54. FILE* dest;
  55. src = fopen(argv[1],"r"); if( !src )exit(1);
  56. dest= fopen(argv[2],"w"); if( !dest )exit(1);
  57. rle(src,dest);
  58. fclose(dest);
  59. fclose(src);
  60. return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement