📄 decode.c
字号:
void decode(void)
{
HuffmanTree HT;
FILE *fp,*fp1;
int n=0,i,c,p,m;
char ch,filename[30],filename1[30],temp,temp1;
clrscr();
printf("----------------------------------DECODING----------------------------\n\n");
printf("Please enter the input path inlucding the Codefile's name:(e.x: c:\\Codefile )\n\n\n");
gets(filename);
clrscr();
printf("----------------------------------DECODING----------------------------\n\n");
printf("Please enter the output path inlucding the Codefile's name:(e.x: c:\\Codefile )\n\n\n");
gets(filename1);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("File does not exist. Press any key..\n");
getch();
}
if((fp1=fopen(filename1,"wb"))==NULL)
{
printf("File does not exist. Press any key..\n");
getch();
}
if(fp){
n=fgetc(fp);
HT=(HuffmanTree)malloc((2*n-1)*sizeof(HTNode));
for(i=0;i<2*n-1;i++)
fread(&HT[i],sizeof(HTNode),1,fp);
p=ftell(fp);
clrscr();
printf("----------------------------------DECODING----------------------------\n\n");
fseek(fp,p,0);
printf("\n\nThe original passage has already been saved to ");
puts(filename1);
ch=fgetc(fp);
m=7;
while(!feof(fp))
{
c=2*n-1;
while(HT[c-1].lchild!=0)
{
temp=1;
temp=temp<<m;
temp=temp&ch;
temp=temp>>m;
temp1=1;
temp=temp&temp1;
if(temp==0)
c=HT[c-1].lchild;
else if(temp==1)
c=HT[c-1].rchild;
else
break;
m--;
if(m<0)
{
ch=fgetc(fp);
m=7;
}
}
fputc(HT[c-1].cha.cha,fp1);
}
fclose(fp);
fclose(fp1);
printf("\n\n\n\n\n Press any key");
getch();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -