c语言使用zlib实现文本字符的gzip压缩与gzip解压缩

网络上找到的好多方法在解压缩字符串的时候会丢失字符,这里是解决方法:

http://stackoverflow.com/questions/21186535/compressing-decompressing-char-array-using-zlib-some-characters-missing

基于此,笔者修改了一下,由于是初学者,只按照编译器不报错的原则修改了一下,能运行

打开vc++6.0新建控制台程序程序,配置好zdll.lib,把zlib1.dll放置到合适的位置

主程序main.cpp如下

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "zlib.h"

int main()
{
  const char *istream = "some foo汉字";
  uLong srcLen = strlen(istream)+1;      // +1 for the trailing `\0`
  uLong destLen = compressBound(srcLen); // this is how you should estimate size 
                                         // needed for the buffer
  unsigned char* ostream = (unsigned char*)malloc(destLen);
  int res = compress(ostream, &destLen, (const unsigned char *)istream, srcLen); 
  // destLen is now the size of actuall buffer needed for compression
  // you don't want to uncompress whole buffer later, just the used part
  if(res == Z_BUF_ERROR){
    printf("Buffer was too small!\n");
    return 1;
  }
  if(res ==  Z_MEM_ERROR){
    printf("Not enough memory for compression!\n");
    return 2;
  }

  unsigned char *i2stream = ostream;
  char* o2stream = (char *)malloc(srcLen);
  uLong destLen2 = destLen; //destLen is the actual size of the compressed buffer
  int des = uncompress((unsigned char *)o2stream, &srcLen, i2stream, destLen2);
  printf("%s\n", o2stream);
  return 0;
}

 附件下载

转载于:https://www.cnblogs.com/passedbylove/p/4547029.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值