c語言使用zlib實現文本字元的gzip壓縮與gzip解壓縮

來源:互聯網
上載者:User

標籤:

網路上找到的好多方法在解壓縮字串的時候會丟失字元,這裡是解決方案:

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;}

 附件下載

c語言使用zlib實現文本字元的gzip壓縮與gzip解壓縮

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.