gzip-Dateien mit zlib dekomprimieren – ein minimales Beispiel
English
Deutsch
zlib ist eine hervorragende Bibliothek, die von hunderttausenden Programmen (inklusive Python) verwendet wird. Allerdings fehlt es ihr an Dokumentation.
Dieses minimale Beispiel zeigt Ihnen, wie Sie ein einfaches zcat-ähnliches Programm erstellen, das eine gzip-komprimierte Eingabedatei dekomprimiert und ihren Inhalt auf stdout ausgibt.
zzcat.c
/**
* zzcat.c -- Minimales gzip-Dekompressionsbeispiel mit zlib
* Geschrieben von Uli Köhler (techoverflow.net).
Nicht urheberrechtlich geschützt -- der Public Domain übergeben
*/
#include <stdio.h>
#include <zlib.h>
#define BUFSIZE 16384
/* komprimieren oder dekomprimieren von fin (Befehlszeilenargument) nach stdout */
int main(int argc, char **argv)
{
if(argc <= 1) { // <= (Anzahl der erwarteten CLI-Argumente)
fprintf(stderr, "Verwendung: %s <Eingabedatei>\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;
}Kompilieren mit
compile_zzcat.sh
g++ -o zzcat zzcat.c -lzVerwendungsbeispiel:
zzcat_usage_example.sh
# Testdatei erstellen
echo "foo" | gzip -c > test.txt.gz
# Mit zzcat dekomprimieren!
./zzcat test.txt.gz # Dies gibt "foo" ausCheck 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