在C中解压缩.gz字符串?

时间:2013-03-14 18:43:37

标签: c string gzip compression

我需要解压缩当前存储在任意长字符串中的.gz文件(如stuff.txt.gz)。我在zip库中看了很多,但没有一个直接的答案。

popen是不可接受的,我需要一切都在我的程序中。此外,这是Windows。

我可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

查看gzunpack库。

用法

#include "gzunpack.h"

...

    // read .GZ file header

    FILE *packedFileHandle = fopen("test1.gz", "rb");

    GzFileHeader *gzFileHeader = gzUnpackHeader(packedFileHandle);

    printf("Header:\n");
    printf("compressionMethod = %d\n", gzFileHeader->compressionMethod);
    printf("originalFileName = '%s'\n", gzFileHeader->originalFileName);
    printf("fileComment = '%s'\n", gzFileHeader->fileComment);

    // unpack .GZ file

    fseek(packedFileHandle, 0, SEEK_SET); // rewind

    FILE *unpackedFileHandle = fopen(gzFileHeader->originalFileName, "wb");

    gzUnpackFile(packedFileHandle, unpackedFileHandle);

    // free resources

    fclose(unpackedFileHandle);
    fclose(packedFileHandle);

    gzFreeHeader(gzFileHeader);