decoding.cpp
来自「用C++编写的哈弗曼树的源代码,方便C语言及C++初学者学习交流」· C++ 代码 · 共 39 行
CPP
39 行
#include"head.h"
void Decoding(Huffmantree HT,int *i)
{//利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。
char c;
int a=0,b=*i;
FILE *CodeFile,*TextFile;
CodeFile=fopen("CodeFile","r");
TextFile=fopen("TextFile","w+");
printf("\n");
while(!feof(CodeFile))
{//从CodeFile获取字符,判断其编码是0或者1
c=fgetc(CodeFile);
if(c=='0')
{//如果其编码为0,则找结点的左孩子
a=HT[b].lchild;
if(HT[a].lchild==0)
{//如果该节点没有孩子,输出对应结点代表的字符,并返回到根节点
printf("%c",HT[a].c);
fprintf(TextFile,"%c",HT[a].c);
b=*i;
continue;
}
}
if(c=='1')
{//如果其编码为1,则找结点的右孩子
a=HT[b].rchild;
if(HT[a].lchild==0)
{//如果此节点没有孩子,输出对应结点代表的字符,并返回到根节点
printf("%c",HT[a].c);
fprintf(TextFile,"%c",HT[a].c);
b=*i;
continue;
}
}
b=a;//找其孩子结点
}
fclose(CodeFile);
fclose(TextFile);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?