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);
}