• 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 ``
      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!
    ");
        return 1;
      }
      if(res ==  Z_MEM_ERROR){
        printf("Not enough memory for compression!
    ");
        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
    ", o2stream);
      return 0;
    }

     附件下载

  • 相关阅读:
    欧拉服务器安装虚拟机(根据open欧拉教程编写vnc)
    Pytest生成html测试报告
    FastAPI8路径参数和数值校验
    pytest不在终端执行的方式
    Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
  • 原文地址:https://www.cnblogs.com/passedbylove/p/4547029.html
Copyright © 2020-2023  润新知