zlib is a great library in use by hundreds of thousands of programs (including Python). However, it lacks documentation.
This minimal example shows you how to create a simple zcat
-like program that decompresses a gz
ipped input file and prints its contents to stdout.
/** * zzcat.c -- Minimal gzip decompression example using zlib * Written by Uli Köhler (techoverflow.net). Not copyrighted -- provided to the public domain */ #include <stdio.h> #include <zlib.h> #define BUFSIZE 16384 /* compress or decompress from fin (command line argument) to stdout */ int main(int argc, char **argv) { if(argc <= 1) { // <= (number of expected CLI arguments) 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 using
g++ -o zzcat zzcat.c -lz
Usage example:
# Create test file echo "foo" | gzip -c > test.txt.gz # Uncompress using zzcat! ./zzcat test.txt.gz # This will print "foo"