第一范文网 - 专业文章范例文档资料分享平台

用哈夫曼编码C语言实现文件压缩

来源:用户分享 时间:2025/11/25 0:35:30 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

ifp=fopen(filename,\ /*打开源文件*/ while(ifp==NULL) { printf(\打开文件出错\\n\ printf(\重新输入文件地址及文件名\ gets(filename);

ifp=fopen(filename,\ } printf(\输入解压后的文件地址和文件名及后缀:\ gets(wenjianming);

ofp=fopen(wenjianming,\ while(ofp==NULL) {

ofp=fopen(\解压的文件.txt\ }

fread(&flength,sizeof(long),1,ifp); fread(&f,sizeof(long),1,ifp); fseek(ifp,f,SEEK_SET); fread(&n,sizeof(long),1,ifp); for(i=0;i

fread(&header[i].b,1,1,ifp); fread(&c,1,1,ifp); p=(long)c;

header[i].count=p; header[i].bits[0]=0; if(p%8>0) m=p/8+1; else m=p/8;

for(j=0;j

fread(&c,1,1,ifp); f=c;

itoa(f,buf,2); f=strlen(buf); for(l=8;l>f;l--) {

strcat(header[i].bits,\

}

strcat(header[i].bits,buf); }

header[i].bits[p]=0; }

for(i=0;i

/*创建并打开目的文件*/

for(j=i+1;j

if(strlen(header[i].bits)>strlen(header[j].bits)) {

tmp=header[i];

header[i]=header[j]; header[j]=tmp; } } }

p=strlen(header[n-1].bits); fseek(ifp,8,SEEK_SET); m=0; bx[0]=0; while(1) {

while(strlen(bx)<(unsigned int)p) {

fread(&c,1,1,ifp); f=c;

itoa(f,buf,2); f=strlen(buf); for(l=8;l>f;l--) {

strcat(bx,\ }

strcat(bx,buf); }

for(i=0;i

if(memcmp(header[i].bits,bx,header[i].count)==0) break; }

strcpy(bx,bx+header[i].count); c=header[i].b; fwrite(&c,1,1,ofp); m++;

if(m==flength) break; }

fclose(ifp); fclose(ofp);

printf(\解压成功\\n\ return; }

void main() /*主函数*/

{printf(\输入a开始解压\\n\printf(\输入b结束解压\\n\ while(1) { char c; c=getch(); if(c=='a') jieya(); else { if(c=='b') return;} } }

七、测试结果及分析:

压缩前的文件夹中的内容

压缩后的文件夹中的内容

搜索更多关于: 用哈夫曼编码C语言实现文件压缩 的文档
用哈夫曼编码C语言实现文件压缩.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1vm1m0k5qz47hq70zb090vngk58yua010g1_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top