回复 11楼 jcw08120110
嘿嘿,果断地重新写这个程序,把每个地方都重新验证是否正确。。。竟然发现我自己的编码都好像有错误了。。。
不在调了。。
思路:根据长度的位来表示字符,从而进行压缩。。。
1:根据待压缩的文件内容先构建哈弗曼树。
2:然后把每个字符的编码求出来。。
3:然后进行核心的地方 把待压缩的文件内容转换为8位的一个字符 进行压缩。然后写入文件。
4: 然后还要写入一些别的信息到文件中。。。
5.解码就是反方向了。。。。
思路还是蛮简单。。。
主要是文件的处理的细节有点问题。。
比如:
文本 abcdf
fgetc 和fread();有点区别。。。
unsigend char c;
while(!feof())
{
c=fgetc("文件指针");
putchar(c);
}
和下面
while(!feof())
{
fread(&c,1,1,文件指针);
putchar(c);
}
上面能够正常读出abcdf来但会读一个回车还是什么的特殊符号。。。
下面会读出absdff 多出一个字符来。。
这样权值就会出现差别。。。
----------