gpt4 book ai didi

c - 在 C 中使用 zlib

转载 作者:行者123 更新时间:2023-12-04 09:17:16 25 4
gpt4 key购买 nike

我目前正在学习 C,并且在尝试制作一个利用 zlib 的小程序时遇到了一些问题。

我已经成功地使用 zlib 库编译了我的应用程序(使用 Codeblocks/MinGW),编译工作正常。我使用了一个基于 zpipe.c 的示例在官方 zlib 站点 (zlib.net) 上找到的示例。

执行时,会创建输出 zip 文件,但它似乎格式不正确和/或为空。我无法使用 7zip 打开它。

这是我修改过的代码。我只是替换了 zpipe.c 中的 main() 函数。

int main() {
printf("Compression test...");

int ret;
FILE *fpsource;
FILE *fpdest;

fpsource = fopen("test.txt", "rb");
fpdest = fopen("output.zip", "wb");

ret = def(fpsource, fpdest, Z_DEFAULT_COMPRESSION);
if (ret != Z_OK) {
printf("failure\n");
zerr(ret);
}
else {
printf("success..\n");
}

fclose(fpsource);
fclose(fpdest);

return EXIT_SUCCESS;
}

我没有收到任何错误,并且打印了我的“成功”消息。只是输出文件已损坏。

最佳答案

zpipe.c 原样将生成 zlib 格式,这是包装在 zlib header 和尾部中的原始压缩数据。 7zip 不会识别它。它会识别 gzip 或 zip 格式,它们是对相同原始压缩数据的完全不同的包装。

您可以修改 zpipe.c 以使用 deflateInit2(和 inflateInit2)而不是没有“2”的版本来选择 gzip 格式而不是 zlib 格式。你可以阅读zlib.h了解如何做到这一点。

关于c - 在 C 中使用 zlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11137246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com