gz文件是gzip产生的压缩文件。前几天接到一个小任务,说是要将其中被压缩的数据提取出来。于是动手写了个小程序实现之。
关于gzip文件格式的相关信息,可以查看RFC 1952
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
int main(int argc,char* argv[])
{
FILE* sfp=NULL;
FILE* dfp=NULL;
int readnum;
int count=0; /*for tail cross two bufs*/
unsigned char uc_magic;
unsigned char uc_temp;
int FLG_FEXTRA_SET=0;
int FLG_FNAME_SET=0;
int FLG_FCOMMENT_SET=0;
int FLG_FHCRC_SET=0;
unsigned int xlen=0;
unsigned char buf[4096]="";
unsigned char buf2[4096]="";
unsigned char result[4096]="";
if(argc<2)
{
printf("usage main your gz file\n");
return(0);
}
sfp=fopen(argv[1],"rb");
if(sfp==NULL)
{
printf("open file error! errmsg:%s\n",strerror(errno));
return(0);
}
dfp