哈夫曼编码译码器课程设计(3)

2019-03-16 16:00

p =ht[p].parent; } co[i] = (char*)malloc((N-start)*sizeof(char)); strcpy(co[i],&cd[start]); printf(\,co[i],i); } if((trans=fopen(\,\))==NULL) { printf(\); exit(0); } fputs(\哈夫曼编码表初始化如下------\\n\,trans); for(i=0;i

voidInputHuffmanWord() { FILE *fp; if((fp=fopen(\,\)) == NULL) { printf(\); exit(0); } printf(\请输入以'#'结束的大写字母字符串:\\n\); while(strcmp(word,\)!=0) { fputs(word,fp); gets(word); } fclose(fp); }

//选择原码输入类型 voidSelectInputType() { system(\); int point; while(1) {

6

printf(\从键盘键入编码内容\\n\); printf(\从文件中读取编码内容\\n\); printf(\退出\\n\); scanf(\,&point); system(\); switch(point) { case 0:InputHuffmanWord();break; case 1: printf(\将编码内容保存在storeWord.txt文件即可。\\n\); printf(\请进行下一步操作!\\n\); break; case 2:printf(\已经退出输入编码内容。。。\\n\);return ; default:printf(\);break; } } }

//编码

voidHuffman_Encod() { int p =M,i,flag; FILE *Input,*Output; charch; if((Output =fopen(\,\)) == NULL) { printf(\); exit(0); } if((Input =fopen(\,\)) == NULL) { printf(\); exit(0); } while(!feof(Output))//遇到输入文件的结束标识 { flag= 0; ch=fgetc(Output); //putchar(ch); for(i=0;i

7

} } if(flag == 0) { fputc('*',Input); } } fclose(Output); fclose(Input); }

//译码

voidHuffman_Decod() { FILE *fp,*Input; int p =M,i=0; charch; if((fp=fopen(\,\)) == NULL) { printf(\); exit(0); } if((Input =fopen(\,\)) == NULL) { printf(\); exit(0); } ch=fgetc(fp); while(!feof(fp)) { if(ch=='0') p =ht[p].LChild; elseif(ch=='1') p =ht[p].RChild; elseif(ch=='*') { fputs(\,Input); putchar(ch); } else printf(\); if(ht[p].LChild== 0 &&ht[p].RChild== 0) { fputc(CH[p-1],Input); putchar(CH[p-1]);

8

p = M; } ch=fgetc(fp); } fclose(fp); fclose(Input); printf(\); }

//译码与原码比较 voidCompare_word() { char ch_1,ch_2; int flag = 1; FILE *origin,*decod; if((origin =fopen(\,\)) == NULL) { printf(\); exit(0); } if((decod=fopen(\,\)) == NULL) { printf(\); exit(0); } while(!feof(decod)) { ch_1 =getc(decod); ch_2 =getc(origin); if(ch_1 !='*') { if(ch_1 != ch_2) flag= 0; } } fclose(decod); fclose(origin); if(flag == 0) printf(\原码与译码不相符!\\n\); else printf(\原码与译码相符!\\n\); }

void main() { int point;

9

}

Init_CH();

InitHuffmanCode(); CreateHuffmanCode(); while(1) {

printf(\哈夫曼编译器 ******\\n\); printf(\初始化哈夫曼表\\n\); printf(\输入编码内容\\n\); printf(\开始编码\\n\); printf(\开始译码\\n\);

printf(\与译码与原码比较\\n\); printf(\退出哈夫曼编译器\\n\); scanf(\,&point); system(\); switch(point) {

case 0:

printf(\哈夫曼表初始化完成!\\n请进行下一步操作!\\n\); break; case 1:

SelectInputType(); break; case 2:

Huffman_Encod();

printf(\编码结束!请进行下一步操作!\\n\); break; case 3:

Huffman_Decod();

printf(\译码结束!已将译码内容存放storeWord_1.txt!\\n\); printf(\请进行下一步操作!\\n\); break; case 4:

Compare_word(); break; case 5:

printf(\已经退出编译器。。。\\n\); return ;

default:printf(\);break; } }

10


哈夫曼编码译码器课程设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2014复旦大学行政学考研真题与答案解析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: