现在,我已经能够计算出编码,但不知道怎样按我算出来的编码进行输出。
这应该不是个很难的问题吧?希望大家指点指点。谢谢了!
对了,有个例子,可以看看效果:
input.txt:
fhdsaujngfsd
g
fdahfadnp98ugvewrjs[gvopisfdphanmubgvord
output.txt:
9
89[abdefghijmnoprsuvw AG$幼#慚哯l?Ua攓谉(??鋿i瑕?
dZ}i?牏鐡{?Zt骱?Ta 邴?
就是这样,输出后应该是个乱码效果
7 个解决方案
#1
狂顶我自己
#2
这个不难?
#3
我觉得应该就是个二进制输入输出文件的问题啊,但霍夫曼编码又不是定长的,网上没找到相关资料,所以就只能到这里来请教高人了
#4
这个你得根据input.txt的文件内容创建一棵霍夫曼树,然后存到output.txt中,将文件压缩,读output.txt时先读霍夫曼树,再根据霍夫曼树将文件解压,
这是我以前用霍夫曼树做的一个压缩软件源代码,希望对你有帮助
http://download.csdn.net/source/2161766
《数据结构课程设计案例精编(用C/C++描述)(附光盘)》 这本书也有一个详细的例子
这是我以前用霍夫曼树做的一个压缩软件源代码,希望对你有帮助
http://download.csdn.net/source/2161766
《数据结构课程设计案例精编(用C/C++描述)(附光盘)》 这本书也有一个详细的例子
#5
多谢回答,你的资料我已经下载了,慢慢研究。不过我其实只是想知道怎样用自己的编码把字符写入文件,因为其它地方我已经做好了,编码都已经得到了。
#6
编码表用两个一维数组表示 A B C D char *ha[n] = {"0", "10", 110", "111"}
根据fsd..字符串,依次读每个字符,在编码表中找对应的哈夫曼编码。
char myBianMa[MAX];
while (*str != '\0')
{
strcat(mybianMa, ha[*str];
++str;
}
大概是这样。中间完整的实现你去
然后把myBianMa写入文件就ok啦。
根据fsd..字符串,依次读每个字符,在编码表中找对应的哈夫曼编码。
char myBianMa[MAX];
while (*str != '\0')
{
strcat(mybianMa, ha[*str];
++str;
}
大概是这样。中间完整的实现你去
然后把myBianMa写入文件就ok啦。
#7
我怎么觉得这个是把一串0和1组成的字符串输出到文件了呢。没有看的太明白
#1
狂顶我自己
#2
这个不难?
#3
我觉得应该就是个二进制输入输出文件的问题啊,但霍夫曼编码又不是定长的,网上没找到相关资料,所以就只能到这里来请教高人了
#4
这个你得根据input.txt的文件内容创建一棵霍夫曼树,然后存到output.txt中,将文件压缩,读output.txt时先读霍夫曼树,再根据霍夫曼树将文件解压,
这是我以前用霍夫曼树做的一个压缩软件源代码,希望对你有帮助
http://download.csdn.net/source/2161766
《数据结构课程设计案例精编(用C/C++描述)(附光盘)》 这本书也有一个详细的例子
这是我以前用霍夫曼树做的一个压缩软件源代码,希望对你有帮助
http://download.csdn.net/source/2161766
《数据结构课程设计案例精编(用C/C++描述)(附光盘)》 这本书也有一个详细的例子
#5
多谢回答,你的资料我已经下载了,慢慢研究。不过我其实只是想知道怎样用自己的编码把字符写入文件,因为其它地方我已经做好了,编码都已经得到了。
#6
编码表用两个一维数组表示 A B C D char *ha[n] = {"0", "10", 110", "111"}
根据fsd..字符串,依次读每个字符,在编码表中找对应的哈夫曼编码。
char myBianMa[MAX];
while (*str != '\0')
{
strcat(mybianMa, ha[*str];
++str;
}
大概是这样。中间完整的实现你去
然后把myBianMa写入文件就ok啦。
根据fsd..字符串,依次读每个字符,在编码表中找对应的哈夫曼编码。
char myBianMa[MAX];
while (*str != '\0')
{
strcat(mybianMa, ha[*str];
++str;
}
大概是这样。中间完整的实现你去
然后把myBianMa写入文件就ok啦。
#7
我怎么觉得这个是把一串0和1组成的字符串输出到文件了呢。没有看的太明白