资源简介
基于Huffman树的文件压缩C源码,支持大文件边读取边压缩。
代码片段和文件信息
//进行文件解压。 。。。。
#include “../HuffmanTree.h“
#define NAMESIZE 500
void rezip(const char*s)
{
//s 为压缩文件的地址和文件名。
printf(“进行文件解压\n“);
FILE*pr*pw;
int ai=0jn=256m=2*n-1;UInt32 w[256];
HuffmanCode HChc;HuffmanTree HT;
char rezipname[NAMESIZE]=“re“;
i=0;
while(s[i]!=‘.‘){rezipname[2+i]=s[i];i++;}
rezipname[2+i]=‘.‘;i++;
pr=fopen(s“rb“);
if(!pr){
printf(“文件打开失败!“);exit(1);
}
j=0;a=fgetc(pr);
while(j<4){
rezipname[2+i]=a;if(j<3)a=fgetc(pr);j++;i++;
}
HT=(HuffmanTree)malloc(sizeof(HTNode)*(m+1));
HT[0].weight=0;HT[0].parent=0;HT[0].lchild=0;HT[0].rchild=0;
for(i=1;i<=n;i++){
HT[i].weight=0;//此时不需要权重,所以可以随便赋值。
HT[i].lchild=0;
HT[i].rchild=0;
}
for(i=n+1;i<=m;i++)
{
HT[i].weight=0;//此时不需要权重,所以可以随便赋值。
fread(&a21pr);HT[i].lchild=a;HT[a].parent=i;
fread(&a21pr);HT[i].rchild=a;HT[a].parent=i;
}
HT[m].parent=0;
//此时HT为霍夫曼树,
int gm=0;
char aa[80000]b[8];int x[10000]d;a=fgetc(pr);
/*aa和b先开辟一定的内存空间。先将文件写到内存里 然后再写到文件里。 所以只能解压比较小的文件。 */
while(!feof(pr))
{
for(int i=0;i<8;i++){
if(a){b[7-i]=48+a%2;a=a/2;}
else b[7-i]=‘0‘;
}
for(int i=0;i<8;i++)
aa[8*j+i]=b[i];
j++;d=a;
a=fgetc(pr);
}
for(i=0;i<8;i++)if(a){b[7-i]=48+a%2;a=a/2;}else break;
for(int k=0;k aa[8*j-8+k]=b[8-i+k];
// for(;i<7;i++)aa[8*j-8+i]=‘0‘;
aa[8*j-8+i]=‘0‘;aa[8*j-8+i+1]=‘#‘;
//下面将aa所存的编码解密
Rewin(HTaaxngm);
FILE *fw;
fw=fopen(rezipname“wb“);
for(int i=0;i {x[i]=x[i]-1;fwrite(x+i11fw);}
fclose(fw);fclose(pr);
printf(“解压成功!\n“);
}
int main()
{
const char*str2=“zip123.txt“;
rezip(str2);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3433 2015-11-16 17:23 HuffmanZip\HuffmanTree.h
文件 1823 2015-11-24 19:32 HuffmanZip\unzip_2.cpp
文件 3148 2015-11-24 19:32 HuffmanZip\zip_2.cpp
目录 0 2017-07-14 22:39 HuffmanZip
----------- --------- ---------- ----- ----
8404 4
- 上一篇:避障小车原理图
- 下一篇:国科大模式识别与机器学习考题总结(详细答案)
相关资源
- jpeg压缩编码中的Huffman编码表
- 八皇后问题,vc源码。小游戏。
- ECC加密算法实现C源码
- NC源码和程序附上目前最详细的使用手
- 文件压缩算法比较经典的几种
- 自己编写的malloc源码
- 基于51单片机控制的函数信号发生器含
- 一个huffman压缩解压算法源码
- 基于STM32F030的PCM5242 miniDSP驱动配置
- Quake3 自适应 Huffman 编码.pdf
- 国密SM4算法ECB CBC源码及demoLinux C版
- 两种遍历方法实现赫夫曼编码
- DNS解析,gethostbyname的C源码
- PGP加密源程序C源码
- Huffman编码 Verilog代码
- Huffman编码、解码器的Verilog实现
- Huffman与Shannon-Fano编码实验报告
- 51单片机的步进电机控制,lcd1602显示
- 用Huffman编码实现文件压缩含代码
- 捆绑文件异步同步操作vc源码
- 成绩管理系统源码
- stm32 spi方式读写EEPROM
- DTW算法C源码语音识别算法
- G.729的编解码C源码(使用Intel的IPP包)
- μCOS-II中OS_TASK.C源码中文注释版
- 瑞士军刀NC源码
- huffman树的构造
- 华中科技大学编译原理实验yacc源码
- 网际校验和算法VC源码
- Win7进程注入绕UAC源码
评论
共有 条评论