📄 00000008.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: reden (Offer 快快来啊 ~!), 信区: Linux <BR>标 题: Linux程式设计入门 - zlib的运用 <BR>发信站: BBS 水木清华站 (Thu Apr 1 20:01:57 1999) <BR> <BR>Linux程式设计入门 - zlib的运用 <BR> <BR> <BR> <BR> gzip(*.gz)档案格式几乎是Linux下的标准格式了,有人认为bzip2的压缩率比 <BR> <BR> gzip来得高。一般来说,这个说法大致正确,不过根据我个人的经验,有一半 <BR> <BR> 以上的档案,bzip2没有比gzip的压缩率来得高,有少数状况下,gzip压缩率反 <BR> <BR> 而比bzip2来的高。 <BR> <BR> <BR> zlib是个支援gzip档案格式的函数库,它使得gz档的存取就犹如开档关档一样 <BR> <BR> 地容易,您可以很容易地为您的程式加入gz档的支援。 <BR> <BR> <BR> <BR> 使用范例 : showgz.c <BR> <BR> <BR> #include <stdio.h> <BR> <BR> #include <stdlib.h> <BR> <BR> #include <zlib.h> <BR> <BR> <BR> void main(int argc,char **argv) <BR> <BR> { <BR> <BR> gzFile zip; <BR> <BR> int c; <BR> <BR> <BR> if (argc<2) return; <BR> <BR> <BR> zip = gzopen(argv[1],"rb"); <BR> <BR> while ((c=gzgetc(zip))!=EOF) putchar(c); <BR> <BR> gzclose(zip); <BR> <BR> } <BR> <BR> <BR> 编译 <BR> <BR> <BR> gcc -o showgz showgz.c -lz <BR> <BR> <BR> 检验 <BR> <BR> <BR> gzip -9 < showgz.c > showgz.c.gz <BR> <BR> ./showgz showgz.c.gz <BR> <BR> <BR> 将会把这个程式内容显示出来,showgz的作用可说等於gzip -dc。 <BR> <BR> <BR> <BR> 函数宣告 <BR> <BR> <BR> gzFile gzopen (const char *path, const char *mode); <BR> <BR> 开启一个gzip(*.gz)档。 <BR> <BR> mode叁数可为"rb"或"wb"。 <BR> <BR> 另外也可包含压缩程度如"wb9"。 <BR> <BR> 用'f'作为过滤资料,如"wb6f"。 <BR> <BR> 用'h'可指定Huffman only压缩,如"wb1h" <BR> <BR> gzopen亦可用於读取非压缩的gzip档案格式,在这种状况下,gzread会直接读 <BR> <BR> 取,而不进行解压缩。 <BR> <BR> <BR> <BR> <BR> int gzread (gzFile file, voidp buf, unsigned len); <BR> <BR> 与read的用法相同。 <BR> <BR> <BR> int gzwrite (gzFile file, const voidp buf, unsigned len); <BR> <BR> 与write用法相同。 <BR> <BR> <BR> int gzprintf (gzFile file, const char *format, ...); <BR> <BR> 与fprintf用法相同。 <BR> <BR> <BR> char * gzgets (gzFile file, char *buf, int len); <BR> <BR> 与fgets用法相同。 <BR> <BR> <BR> int gzputc (gzFile file, int c); <BR> <BR> 与fputc用法相同。 <BR> <BR> <BR> int gzgetc (gzFile file); <BR> <BR> 与fgetc用法相同。 <BR> <BR> <BR> int gzflush (gzFile file, int flush); <BR> <BR> 与fflush作用相同。 <BR> <BR> <BR> z_off_t gzseek (gzFile file, z_off_t offset, int whence); <BR> <BR> whence不支援SEEK_END <BR> <BR> 如果档案是开启为"读取",则SEEK_SET及SEEK_CUR,向前及向後均支援,不过 <BR> <BR> 很慢就是了。 <BR> <BR> 如果档案是开启为"写入",仅支援向前SEEK。 <BR> <BR> <BR> int gzrewind (gzFile file); <BR> <BR> 与gzseek(file, 0L, SEEK_SET)相同作用,仅在读取时有效。 <BR> <BR> <BR> z_off_t gztell (gzFile file); <BR> <BR> 返回值 : 目前档案位置(解压缩後的位置) <BR> <BR> <BR> int gzeof (gzFile file); <BR> <BR> 返回值 : 1 - EOF, 0 - not EOF <BR> <BR> <BR> int gzclose (gzFile file); <BR> <BR> 关闭档案 <BR> <BR> 返回值 : zlib error number <BR> <BR> <BR> <BR> OK STATION, Webmaster, Brian Lin <BR> <BR> <BR> <BR> <BR>-- <BR>在江湖中,只要拿起了刀,就是一场无涯的梦。 <BR> <BR>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.21.168] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -