zlib压缩二进制文件的问题

firsun2003 firsun2003 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
要压缩一批二进制文件,文件大小大从几十k到几M吧。
想使用zlib,看到zlib库中有一个文件zpipe.c,里面写了两个方法def(压缩)和inf(解压),想拿来直接使用。
但使用的时候有问题,压缩后的文件是变小了,但解压后只有0k了。
哪位了解情况的指导一下,非常感谢!

我是这么使用的,直接修改了main函数中的语句来测试。

/* compress or decompress from stdin to stdout */
int main(int argc, char **argv)
{
int ret;
FILE *src, *temp, *des;
src = fopen("c:\\test.txt", "r"); // source file
temp = fopen("c:\\test2.txt", "w+"); // compressed file
des = fopen("c:\\test3.txt", "w+"); // uncompressed file, 0K

/* do compression if no arguments */
if (argc == 1) {
ret = def(src, temp, Z_DEFAULT_COMPRESSION);//the original statement is ret = def(standin, standout, Z_DEFAULT_COMPRESSION);
ret = inf(temp, des); // I add the stament to uncompress
if (ret != Z_OK)
zerr(ret);
return ret;
}

/* do decompression if -d specified */
else if (argc == 2 && strcmp(argv[1], "-d") == 0) {
ret = inf(stdin, stdout);
if (ret != Z_OK)
zerr(ret);
return ret;
}

/* otherwise, report usage */
else {
fputs("zpipe usage: zpipe [-d] < source > dest\n", stderr);
return 1;
}


...全文
评论 9
收藏 已收藏
分享
返回顶部