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 + -
显示快捷键?