用哈夫曼编码实现文件压缩,C语言编写,简单实用,
if(j%8!=0) /*按八位读取*/ {
for(f=j%8;f<8;f++)
strcat(header[i].bits,"0"); } while(header[i].bits[0]!=0)
{
c=0; for(j=0;j<8;j++)
{
if(header[i].bits[j]=='1') c=(c<<1)|1; else c=c<<1;
}
strcpy(header[i].bits,header[i].bits+8); /*把从header[i].bits+8地址开始且含有NULL结束符的字符串赋值到以header[i].bits开始的地址空间 */ fwrite(&c,1,1,ofp); } }
fclose(ifp);
fclose(ofp);
printf("压缩成功\n");
}
void main() /*主函数*/ {printf("输入a开始压缩\n"); printf("输入b结束压缩\n");
while(1) { char c;
c=getch(); if(c=='a') yasuo(); else
{ if(c=='b') return;} }
}
压缩的图解