⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000008.htm

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -