encoding.cpp

来自「用C++编写的哈弗曼树的源代码,方便C语言及C++初学者学习交流」· C++ 代码 · 共 41 行

CPP
41
字号
#include"head.h"
void Encoding()
{//利用已建好的哈夫曼树,对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。
	char c;
	int i=1;
	Node *p,*p1,*p2,*p3;
	FILE *hfmTree,*CodeFile,*ToBeTran;
	hfmTree=fopen("hfmTree","r+");
	ToBeTran=fopen("ToBeTran.txt","r");
	p=(Node *)malloc(sizeof(Node));
	p->next=NULL;
	p1=p;
	    while(!feof(hfmTree))
		{//将哈夫曼树读入
			p2=(Node*)malloc(sizeof(Node));
			if(fread(p2,sizeof(Node),1,hfmTree)==1)
			{
				p1->next=p2;
				p1=p2;
			}
			else break;
		}
	p1->next=NULL;
	fclose(hfmTree);
	CodeFile=fopen("CodeFile","wb+");
	while(!feof(ToBeTran))
	{
		c=fgetc(ToBeTran);
		p3=p->next;
		while(p3!=NULL)
		{
			if(c==p3->a)
			{//找到待编字符,并且找到其相应的编码,将其编码结果存入到CodeFile文件
				fprintf(CodeFile,"%s",p3->c);break;
			}
			p3=p3->next;
		}
	}
   fclose(CodeFile);
   fclose(ToBeTran);
   }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?