Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8346829
  • 博文数量: 1413
  • 博客积分: 11128
  • 博客等级: 上将
  • 技术积分: 14685
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 10:03
个人简介

follow my heart...

文章分类

全部博文(1413)

文章存档

2013年(1)

2012年(5)

2011年(45)

2010年(176)

2009年(148)

2008年(190)

2007年(293)

2006年(555)

分类: C/C++

2006-09-22 09:10:25

gzip(*.gz)档案格式几乎是Linux下的标准格式了,有人认为bzip2的压缩率比
  
  gzip来得高。一般来说,这个说法大致正确,不过根据我个人的经验,有一半
  
  以上的档案,bzip2没有比gzip的压缩率来得高,有少数状况下,gzip压缩率反
  
  而比bzip2来的高。 
 
  
  zlib是个支援gzip档案格式的函数库,它使得gz档的存取就犹如开档关档一样
  
  地容易,您可以很容易地为您的程序加入gz档的支援。 
 
 
  
  使用范例 : showgz.c
 
  
  #i nclude  
  
  #i nclude  
  
  #i nclude  
 
  
  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 
 
 
  
  OK STATION, Webmaster, Brian Lin
阅读(919) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~