zlib之基本函数zlibVersion、deflateInit/deflate/deflateEnd、inflateInit/inflate/inflateEnd
来源:互联网 发布:有哪些功夫软件 编辑:程序博客网 时间:2024/06/07 05:34
获取版本函数:zlibVersion
压缩函数:deflateInit、deflate、deflateEnd
解压缩函数:inflateInit、inflate、inflateEnd
#include <iostream>#include <string>#include <zlib.h>#include <zconf.h>using namespace std;#define CHUNK 16384int def(FILE *source, FILE *dest, int level){z_stream strm;strm.zalloc = Z_NULL;strm.zfree = Z_NULL;strm.opaque = Z_NULL;deflateInit(&strm, level);int flush;int have;unsigned char in[CHUNK];unsigned char out[CHUNK];do {strm.avail_in = fread(in, 1, CHUNK, source);strm.next_in = in;flush = feof(source) ? Z_FINISH : Z_NO_FLUSH;do {strm.avail_out = CHUNK;strm.next_out = out;deflate(&strm, flush);have = CHUNK - strm.avail_out;fwrite(out, 1, have, dest);} while (0 == strm.avail_out);} while (Z_FINISH != flush);deflateEnd(&strm);return Z_OK;}int inf(FILE *source, FILE *dest){z_stream strm;strm.zalloc = Z_NULL;strm.zfree = Z_NULL;strm.opaque = Z_NULL;inflateInit(&strm);int ret = Z_OK;int have;unsigned char in[CHUNK];unsigned char out[CHUNK];do {strm.avail_in = fread(in, 1, CHUNK, source);strm.next_in = in;if(0 == strm.avail_in)break;do {strm.avail_out = CHUNK;strm.next_out = out;ret = inflate(&strm, Z_NO_FLUSH);have = CHUNK - strm.avail_out;fwrite(out, 1, have, dest);} while (0 == strm.avail_out);} while (Z_STREAM_END != ret);inflateEnd(&strm);return Z_OK;}void main(int argc, char *argv[]){cout<<"zlibVersion:"<<zlibVersion()<<endl;FILE *fp1 = fopen("1.txt","rb+");FILE *fp2 = fopen("2.txt", "rb+");FILE *fp3 = fopen("3.txt", "rb+");if((NULL == fp3) || (NULL == fp3) || (NULL == fp3)){cout<<"fail to open file."<<endl;return;}//压缩def(fp1, fp2, Z_DEFAULT_COMPRESSION);//解压缩,这个2个函数要分别调用。inf(fp2, fp3);}
此代码参数官网示例代码,本代码为了学习,只写了最简单的函数,没有错误处理。
看完整的示例代码,请看官网示例代码:http://www.zlib.net/zlib_how.html
- zlib之基本函数zlibVersion、deflateInit/deflate/deflateEnd、inflateInit/inflate/inflateEnd
- zlib.h介绍--关于deflate函数和inflate函数
- gzip,deflate,zlib辨析
- GZIP, ZLIB, DEFLATE, 文件格式
- gzip,deflate,zlib辨析
- gzip,deflate,zlib辨析
- GZIP, ZLIB, DEFLATE, 文件格式 --zz
- zlib inflate z_stream
- deflate and inflate simple demo (ZipInputStream/ZipOutputStream)
- Zlib的deflate, z_stream结构的使用
- zlib之gzip file常用函数
- js pako.inflate 解压zlib压缩文件
- Java和PHP配合:deflate(压缩)和inflate(解压)
- Zlib库对网页中deflate压缩数据的解压
- zlib基本使用
- LayoutInflater的inflate函数
- inflate函数的理解
- inflate函数使用总结
- sql语句中字段值有单双引号
- 近期需要关注几点技术
- rails应用与多数据库的连接
- 安卓开发18:动画之View Animation
- 索骥馆-DIY操作系统之《30天自制操作系统》扫描版[PDF]
- zlib之基本函数zlibVersion、deflateInit/deflate/deflateEnd、inflateInit/inflate/inflateEnd
- 解决GlusterFS 1024以下端口问题
- vage的共享CBC Latch的秘密
- 如何用Gruff生成图表
- Win32学习笔记——菜单
- Windows Mobile 6开发环境的配置过程
- javabean是什么
- 使用parseexcel Ruby读取Excel
- ubuntu下NS2+leach算法安装笔记(2)