c++ zlib压缩与解压缩

#include "stdafx.h"
#include "zlib.h"
#include <iostream>
using   namespace   std;
#pragma comment(lib,"zlib.lib")

int _tmain(int argc, _TCHAR* argv[])
{
 int   err;
 Byte   compr[200],   uncompr[200];         //足够大
 uLong   comprLen,   uncomprLen;
 const   char*   hello   =   "1234567890"; //原文

 uLong   len   =   strlen(hello);//   +   1;
 comprLen     =   sizeof(compr)   /   sizeof(compr[0]);

 err   =   compress(compr,   &comprLen,   (const   Bytef*)hello,   len);

 if   (err   !=   Z_OK)  
 {
  cerr   <<   "压缩错误:   "   <<   err   <<   '\n ';
 }

 cout   <<   "原文长度:   "   <<   len <<   "\n压缩后长度:"   <<   comprLen   <<   '\n ';
 strcpy((char*)uncompr,   "garbage ");

 err   =   uncompress(uncompr,   &uncomprLen,   compr,   comprLen);

 if   (err   !=   Z_OK)  
 {
  cerr   <<   "解压错误:   "   <<   err   <<   '\n ';
 }

 cout   <<   "\n原文长度:"   <<   len <<   "\n解压后长度:"   <<   uncomprLen   <<   '\n ';

 if   (strcmp((char*)uncompr,   hello))  
 {
  cerr   <<   "\n解压失败!!!\n ";
 }
 else  
 {
  cout   <<   "\n解压成功:"   <<   (char*)uncompr;
 }

 FILE *f= fopen("d:\\b1.bin","wb");
 fwrite(compr,comprLen,1,f);
 fclose(f);

 getchar();
 return 0;
}

posted on 2011-03-23 14:20 chuncn 阅读(860) 评论(1) 编辑 收藏