关于字符编码的问题,比较急用,希望大家帮帮忙

时间:2022-06-04 17:37:38
我在做一个关于霍夫曼树的小课程设计,具体要求是:指定一个输入文件,比如input.txt,将里面的字符按霍夫曼编码的方式进行编码,然后输出到一个指定文件中,比如output.txt。
现在,我已经能够计算出编码,但不知道怎样按我算出来的编码进行输出。
这应该不是个很难的问题吧?希望大家指点指点。谢谢了!

对了,有个例子,可以看看效果:
input.txt:
fhdsaujngfsd
g
fdahfadnp98ugvewrjs[gvopisfdphanmubgvord

output.txt:
9   
89[abdefghijmnoprsuvw AG$幼#慚哯l?Ua攓谉(??鋿i瑕?
dZ}i?牏鐡{?Zt骱?Ta 邴?

就是这样,输出后应该是个乱码效果

7 个解决方案

#1


狂顶我自己

#2


这个不难?

#3


引用 2 楼 defonds 的回复:
这个不难?

我觉得应该就是个二进制输入输出文件的问题啊,但霍夫曼编码又不是定长的,网上没找到相关资料,所以就只能到这里来请教高人了

#4


这个你得根据input.txt的文件内容创建一棵霍夫曼树,然后存到output.txt中,将文件压缩,读output.txt时先读霍夫曼树,再根据霍夫曼树将文件解压,
这是我以前用霍夫曼树做的一个压缩软件源代码,希望对你有帮助
http://download.csdn.net/source/2161766

《数据结构课程设计案例精编(用C/C++描述)(附光盘)》 这本书也有一个详细的例子

#5


引用 4 楼 lanneret1234 的回复:
这个你得根据input.txt的文件内容创建一棵霍夫曼树,然后存到output.txt中,将文件压缩,读output.txt时先读霍夫曼树,再根据霍夫曼树将文件解压,
这是我以前用霍夫曼树做的一个压缩软件源代码,希望对你有帮助
http://download.csdn.net/source/2161766

《数据结构课程设计案例精编(用C/C++描述)(附光盘)》 这本书也有一个详细的……

多谢回答,你的资料我已经下载了,慢慢研究。不过我其实只是想知道怎样用自己的编码把字符写入文件,因为其它地方我已经做好了,编码都已经得到了。

#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啦。

#7


引用 6 楼 tajon1226 的回复:
编码表用两个一维数组表示 A B C D char *ha[n] = {"0", "10", 110", "111"}

根据fsd..字符串,依次读每个字符,在编码表中找对应的哈夫曼编码。

char myBianMa[MAX];

while (*str != '\0')
{
  strcat(mybianMa, ha[*str];
  ++str;
}
大概是这样。中间……

我怎么觉得这个是把一串0和1组成的字符串输出到文件了呢。没有看的太明白

#1


狂顶我自己

#2


这个不难?

#3


引用 2 楼 defonds 的回复:
这个不难?

我觉得应该就是个二进制输入输出文件的问题啊,但霍夫曼编码又不是定长的,网上没找到相关资料,所以就只能到这里来请教高人了

#4


这个你得根据input.txt的文件内容创建一棵霍夫曼树,然后存到output.txt中,将文件压缩,读output.txt时先读霍夫曼树,再根据霍夫曼树将文件解压,
这是我以前用霍夫曼树做的一个压缩软件源代码,希望对你有帮助
http://download.csdn.net/source/2161766

《数据结构课程设计案例精编(用C/C++描述)(附光盘)》 这本书也有一个详细的例子

#5


引用 4 楼 lanneret1234 的回复:
这个你得根据input.txt的文件内容创建一棵霍夫曼树,然后存到output.txt中,将文件压缩,读output.txt时先读霍夫曼树,再根据霍夫曼树将文件解压,
这是我以前用霍夫曼树做的一个压缩软件源代码,希望对你有帮助
http://download.csdn.net/source/2161766

《数据结构课程设计案例精编(用C/C++描述)(附光盘)》 这本书也有一个详细的……

多谢回答,你的资料我已经下载了,慢慢研究。不过我其实只是想知道怎样用自己的编码把字符写入文件,因为其它地方我已经做好了,编码都已经得到了。

#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啦。

#7


引用 6 楼 tajon1226 的回复:
编码表用两个一维数组表示 A B C D char *ha[n] = {"0", "10", 110", "111"}

根据fsd..字符串,依次读每个字符,在编码表中找对应的哈夫曼编码。

char myBianMa[MAX];

while (*str != '\0')
{
  strcat(mybianMa, ha[*str];
  ++str;
}
大概是这样。中间……

我怎么觉得这个是把一串0和1组成的字符串输出到文件了呢。没有看的太明白