www.pudn.com > ch02.rar > rl_d.c


// 程式名稱: 
      rl_d.c 
// 程式功能: 
      變動長度編碼壓縮之解壓縮 
// 執行方式: 
      rl_d 壓縮檔名 資料檔名 
// 程式說明: 
      1. 程式rl_c.c之解壓縮,參考2.2節 變動長度編碼法 
//            2. 整數採用固定長度一個位元組表示法 
//            3. 對於只出現一次的位元組S亦用iS取代 
#include  
FILE *infile,*outfile; 
int main(int argc,char *argv[]) 
{ 
  switch(argc) 
  { 
    case 1 : 
      printf("無壓縮檔名!\n"); 
      printf("執行方式為 C>rl_c 壓縮檔名 資料檔名\n"); 
      exit(1); 
      break; 
    case 2: 
      printf("無資料檔名!\n"); 
      printf("執行方式為 C>rl_c 壓縮檔名 資料檔名\n"); 
      exit(1); 
      break; 
    case 3: 
      if ((infile = fopen(argv[1],"rb")) == NULL) 
      { 
        printf("無法開啟壓縮檔 %s !\n",argv[1]); 
        exit(1); 
      } 
      if ((outfile = fopen(argv[2],"wb")) == NULL) 
      { 
        printf("無法開啟資料檔 %s !\n",argv[2]); 
        exit(1); 
      } 
  } 
  d_runlength(); 
  fclose(infile); 
  fclose(outfile); 
  return(0); 
} 
int d_runlength() 
{ 
  int i,S; 
  while ((i = fgetc(infile)) != EOF){ 
     S = fgetc(infile); 
    while (i != 0){ 
       fputc(S,outfile); 
       i--; 
     } 
  } 
  return(0); 
}