發(fā)信人: reden (Offer 快快來(lái)啊 ~!), 信區(qū): Linux
標(biāo) 題: Linux程式設(shè)計(jì)入門(mén) - zlib的運(yùn)用
時(shí) 間: BBS 水木清華站 (Thu Apr 1 20:01:57 1999)
Linux程式設(shè)計(jì)入門(mén) - zlib的運(yùn)用
____gzip(*.gz)檔案格式幾乎是Linux下的標(biāo)準(zhǔn)格式了,有人認(rèn)為bzip2的壓縮率比gzip來(lái)得高。一般來(lái)說(shuō),這個(gè)說(shuō)法大致正確,不過(guò)根據(jù)我個(gè)人的經(jīng)驗(yàn),有一半以上的檔案,bzip2沒(méi)有比gzip的壓縮率來(lái)得高,有少數(shù)狀況下,gzip壓縮率反而比bzip2來(lái)的高。
____zlib是個(gè)支援gzip檔案格式的函數(shù)庫(kù),它使得gz檔的存取就猶如開(kāi)檔關(guān)檔一樣地容易,您可以很容易地為您的程式加入gz檔的支援。
____使用范例 : showgz.c
#include <stdio.h>
#include <stdlib.h>
#include <zlib.h>
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
____檢驗(yàn)
gzip -9 < showgz.c > showgz.c.gz
./showgz showgz.c.gz
將會(huì)把這個(gè)程式內(nèi)容顯示出來(lái),showgz的作用可說(shuō)等於gzip -dc。
____函數(shù)宣告
gzFile gzopen (const char *path, const char *mode); 開(kāi)啟一個(gè)gzip(*.gz)檔。
mode叁數(shù)可為"rb"或"wb"。另外也可包含壓縮程度如"wb9"。用‘f‘作為過(guò)濾資料,如"wb6f"。用‘h‘可指定Huffman only壓縮,如"wb1h" 。gzopen亦可用於讀取非壓縮的gzip檔案格式,在這種狀況下,gzread會(huì)直接讀取,而不進(jìn)行解壓縮。
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
如果檔案是開(kāi)啟為"讀取",則SEEK_SET及SEEK_CUR,向前及向後均支援,不過(guò)很慢就是了。如果檔案是開(kāi)啟為"寫(xiě)入",僅支援向前SEEK。
int gzrewind (gzFile file); 與gzseek(file, 0L, SEEK_SET)相同作用,僅在讀取時(shí)有效。
z_off_t gztell (gzFile file); 返回值 : 目前檔案位置(解壓縮後的位置)
int gzeof (gzFile file); 返回值 : 1 - EOF, 0 - not EOF
int gzclose (gzFile file); 關(guān)閉檔案。返回值 : zlib error number
OK STATION, Webmaster, Brian Lin
--
在江湖中,只要拿起了刀,就是一場(chǎng)無(wú)涯的夢(mèng)。
※ 來(lái)源:·BBS 水木清華站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.21.168]
============ BTW,精華版里好像也有的,挺簡(jiǎn)單的,呵呵
風(fēng)車(chē)的翼子依然轉(zhuǎn)著 可是磨盤(pán)上 卻是空的...
文章選項(xiàng):
|