Advertisement
Guest User

Untitled

a guest
Sep 16th, 2014
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.58 KB | None | 0 0
  1. #include "includes2.h"
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.            
  6.         FILE *inputFile;        
  7.         FILE *outputFile;      
  8.      
  9.         int byteLength = 8;
  10.         char byte;
  11.         char charSign;
  12.      
  13.         /*Åpner filene for lesing og skriving*/          
  14.         outputFile = fopen(argv[3], "w");
  15.         inputFile = fopen(argv[2], "r");
  16.        
  17.         /*Skriver ut feilmelding dersom filen er tom*/
  18.         if(inputFile == NULL)
  19.         {
  20.                 perror("fopen feilet");
  21.                 return 0;
  22.         }
  23.      
  24.         /*Skriver ut det orginale ASCII bildet*/
  25.         if(0 == strcmp("p", argv[1]))
  26.         {
  27.                 if(argc == 3)
  28.                 {
  29.                     /*Leser en og en char og skriver den ut*/
  30.                     while((charSign = fgetc(inputFile)) != EOF)
  31.                     {
  32.                         printf("%c", charSign);
  33.                     }
  34.                 }
  35.         }
  36.  
  37.         /*leser input filen og komprimerer hvert tegn og deretter skriver den til output fil*/
  38.         if(0 == strcmp("e", argv[1]))
  39.         {
  40.                 if(argc == 4)
  41.                 {
  42.                        /*Løkka går så lenge det er flere tegn i filen*/
  43.                         while((charSign = fgetc(inputFile)) != EOF)
  44.                         {
  45.                             if(charSign == ' ')
  46.                                 {
  47.                                     /*Trekker fra to hver gang, fordi hvert tegn er representert med to bit*/
  48.                                         byteLength -= 2;
  49.                     /*bruker bitwise or og shifter det byteLength til venstre*/  
  50.                                         /*bit representasjon: 00*/
  51.                                         byte |= 0 << byteLength;
  52.                                 }
  53.      
  54.                                 if(charSign == ':')
  55.                                 {
  56.                                         byteLength -= 2;
  57.                                         /*bit representasjon: 01*/
  58.                                         byte |= 1 << byteLength;
  59.                                 }
  60.      
  61.                                 if(charSign == '@')
  62.                                 {
  63.                                         byteLength -= 2;
  64.                                         /*bit representasjon: 10*/
  65.                                         byte |= 2 << byteLength;
  66.                                 }
  67.  
  68.                                 if(charSign == '\n')
  69.                                 {
  70.                                         byteLength -= 2;
  71.                                         /*bit representasjon: 11*/
  72.                                         byte |= 3 << byteLength;        
  73.                                 }
  74.  
  75.                 /*Når byteLength er null er en byte fyllt opp og den skrives til outputFile*/
  76.                                 if(byteLength == 0)
  77.                 {
  78.                                         fputc(byte, outputFile);
  79.                                         byte = 0;
  80.                                     byteLength = 8;
  81.                                 }
  82.                
  83.                         }
  84.             /*Dersom det ikke er nok tegn igjen til å fylle hele byten*/
  85.             if(byteLength != 8){
  86.                 fputc(byte, outputFile);
  87.             }
  88.                 }
  89.         fclose(outputFile);          
  90.         }
  91.      
  92.         if(0 == strcmp("d", argv[1])){
  93.                
  94.                 if(argc == 3){        
  95.                
  96.                     int byte1;
  97.                     int i = 0;
  98.                     while((charSign = fgetc(inputFile)) != EOF){
  99.                        
  100.                             for(i = 6; i >= 0; i-=2){
  101.                     /*Shifter to til høyre*/
  102.                                     byte1 = charSign >> i;
  103.                      /*Bruker bitwise "and" med 3 fordi bit-representasjonen til 3 er 11*/
  104.                                     byte1 &= 3;            
  105.  
  106.                                     if(byte1 == 0){
  107.                                             printf("%c", ' ');
  108.                                     }
  109.                                
  110.                                     if(byte1 == 1){
  111.                                             printf("%c", ':');
  112.                                     }
  113.  
  114.                                     if(byte1 == 2){
  115.                                             printf("%c", '@');
  116.                                     }
  117.  
  118.                                     if(byte1 == 3){
  119.                                             printf("%c", '\n');
  120.                                     }
  121.                             }
  122.                     }
  123.                 }
  124.         }
  125.      
  126.         fclose(inputFile);
  127.    
  128.     return 0;
  129.      
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement