huffman解压缩问题

weixin_48442688 2021-02-12 10:17:59
写了个小程序,用哈夫曼编码进行压缩和解压缩,压缩没有任何问题,小文件解压缩也没问题,但文件大的时候,解压出来的文件就可能只有前半部分,后半部分直接没了,有时候又可以正常解压。有没有大佬遇到过这种情况的,可能是什么原因呢。
...全文
199 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_48442688 2021-02-25
  • 打赏
  • 举报
回复
引用 1 楼 maguangzhi的回复:
你可能用int类型操作文件位置,由于int值范围小结果回绕了。
我用的是文件指针,好像没用到位置操作,就直接从头开始往下写的。我是小白,不太懂你说的这个
weixin_48442688 2021-02-25
  • 打赏
  • 举报
回复
引用 4 楼 赵4老师的回复:
不要把 fopen("...","...");fscanf,fprintf,fgets,fgetc,fputc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fseek,ftell,fread,fwrite,fscanf,fprintf,fgets,fgetc,fputc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待 弄混了
就是这个原因,解决了,谢谢大佬
weixin_48442688 2021-02-25
  • 打赏
  • 举报
回复
引用 5 楼 maguangzhi的回复:
最好以二进制方式打开文件
对对对就是这个原因,刚刚看了四楼的回答,解决了,也谢谢你了
maguangzhi 2021-02-25
  • 打赏
  • 举报
回复
最好以二进制方式打开文件
赵4老师 2021-02-25
  • 打赏
  • 举报
回复
不要把 fopen("...","...");fscanf,fprintf,fgets,fgetc,fputc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fseek,ftell,fread,fwrite,fscanf,fprintf,fgets,fgetc,fputc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待 弄混了
xiaoyin35 2021-02-16
  • 打赏
  • 举报
回复
引用 1 楼 maguangzhi 的回复:
你可能用int类型操作文件位置,由于int值范围小结果回绕了。
改成long long可以缓解,再不好就自己编写BigNumber类,我有实现代码的一部分,可作为参考。
maguangzhi 2021-02-13
  • 打赏
  • 举报
回复
你可能用int类型操作文件位置,由于int值范围小结果回绕了。

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧