如何使用 zlib 解压 gzip 文件 - 最小示例
zlib 是一个被数十万程序(包括 Python)使用的优秀库。但是,它缺乏文档。
此最小示例展示如何创建一个简单的类似 zcat 的程序,解压 gz 压缩的输入文件并将其内容打印到 stdout。
zzcat.c
/**
* zzcat.c -- 使用 zlib 的最小 gzip 解压示例
* 由 Uli Köhler (techoverflow.net) 编写。
无版权 -- 提供给公共领域
*/
#include <stdio.h>
#include <zlib.h>
#define BUFSIZE 16384
/* 从 fin(命令行参数)压缩或解压到 stdout */
int main(int argc, char **argv)
{
if(argc <= 1) { // <= (期望的 CLI 参数数量)
fprintf(stderr, "Usage: %s <input file>\n", argv[0]);
return -1;
}
gzFile fin = gzopen(argv[1], "rb");
char buf[BUFSIZE];
int n;
while((n = gzread(fin, buf, BUFSIZE)) > 0) {
fwrite(buf, 1, n, stdout);
}
return 0;
}使用以下命令编译
compile_zzcat.sh
g++ -o zzcat zzcat.c -lz用法示例:
zzcat_usage_example.sh
# 创建测试文件
echo "foo" | gzip -c > test.txt.gz
# 使用 zzcat 解压!
./zzcat test.txt.gz # 这将打印 "foo"Check out similar posts by category:
C/C++
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow