免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1301 | 回复: 0
打印 上一主题 下一主题

zlib的运用 加群:17701103,程序员小联盟 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-03 11:15 |只看该作者 |倒序浏览
gzip(*.gz)档案格式几乎是Linux下的标准格式了,有人认为bzip2的压缩率比gzip来得高。一般来说,这个说法大致正确,不过根据我个人的经验,有一半以上的档案,bzip2没有比gzip的压缩率来得高,有少数状况下,gzip压缩率反
而比bzip2来的高。
zlib是个支援gzip档案格式的函数库,它使得gz档的存取就犹如开档关档一样地容易,您可以很容易地为您的程式加入gz档的支援。

使用范例 : showgz.c

#include
#include
#include

void main(int argc,char **argv)
{
gzFile zip;
int c;

if (argc<2) return;

zip = gzopen(argv[1],"rb");
while ((c=gzgetc(zip))!=EOF) putchar(c);
gzclose(zip);
}

编译

gcc -o showgz showgz.c -lz

检验

gzip -9 < showgz.c > showgz.c.gz
./showgz showgz.c.gz

将会把这个程式内容显示出来,showgz的作用可说等於gzip -dc。


函数宣告

gzFile gzopen (const char *path, const char *mode);
开启一个gzip(*.gz)档。
mode叁数可为"rb"或"wb"。
另外也可包含压缩程度如"wb9"。
用'f'作为过滤资料,如"wb6f"。
用'h'可指定Huffman only压缩,如"wb1h"
gzopen亦可用於读取非压缩的gzip档案格式,在这种状况下,gzread会直接读取,而不进行解压缩。


int gzread (gzFile file, voidp buf, unsigned len);
与read的用法相同。

int gzwrite (gzFile file, const voidp buf, unsigned len);
与write用法相同。

int gzprintf (gzFile file, const char *format, ...);
与fprintf用法相同。

char * gzgets (gzFile file, char *buf, int len);
与fgets用法相同。

int gzputc (gzFile file, int c);
与fputc用法相同。

int gzgetc (gzFile file);
与fgetc用法相同。

int gzflush (gzFile file, int flush);
与fflush作用相同。

z_off_t gzseek (gzFile file, z_off_t offset, int whence);
whence不支援SEEK_END
如果档案是开启为"读取",则SEEK_SET及SEEK_CUR,向前及向後均支援,不过很慢就是了。
如果档案是开启为"写入",仅支援向前SEEK。

int gzrewind (gzFile file);
与gzseek(file, 0L, SEEK_SET)相同作用,仅在读取时有效。

z_off_t gztell (gzFile file);
返回值 : 目前档案位置(解压缩後的位置)

int gzeof (gzFile file);
返回值 : 1 - EOF, 0 - not EOF

int gzclose (gzFile file);
关闭档案
返回值 : zlib error number

加群:17701103,程序员小联盟,无论你喜欢任何语言的程序开发、项目管理、数据库、测试、网络、计算机理论,我们都欢迎!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP