[c/c++] 借助zlib库读取.gz文件内容

烈酒焚心 提交于 2019-12-24 21:38:34

文件指针

struct gzFile_s {
    unsigned have;
    unsigned char *next;
    z_off64_t pos;
};

typedef struct gzFile_s *gzFile;

打开.gz文件

gzFile ZEXPORT gzopen(path, mode)
    const char *path;
    const char *mode;
{
    ...
}

path为文件路径,mode为打开模式,以只读模式打开.gz文件

 fpgz = gzopen("./test.txt", "r");

读取.gz文件内容

ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));

关闭.gz文件

ZEXTERN int ZEXPORT    gzclose OF((gzFile file));

代码示例

gzFile fpgz = gzopen(filepath, "r");
if (NULL == fpgz)
{
	printf("Open .gz file [%s] failed.\n", filepath);
	exit(EXIT_FAILURE);
}

char line[256];
memset(line, 0, sizeof(line));
while ( gzgets(fpgz, line, sizeof(line)) )
{
	printf("* %s", line);
}

gzclose(fpgz);

头文件

#include <zlib.h>

gcc编译

g++ foo.cpp -lz

注意一定要加上-lz

ref

https://github.com/madler/zlib
http://www.zlib.net/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!