如何通过zlib和compress2在C中编写gz文件

时间:2013-04-18 09:19:12

标签: c io compression zlib

我正在使用zlib编写一个压缩多个线程数据的程序。所以我不能使用gzwrite。我正在使用compress2()。

*dest_len = compressBound(LOG_BUFF_SZ);
err = compress2((Bytef*)compressed_buff->buff, dest_len, (Bytef*)b->buff, size, GZ_INT_COMPRESSION_LEVEL);
write(fd, compressed_buff->buff, compressed_buff->full);

但是当我尝试通过gzip -d解压缩文件时,我看到下一个输出:“不是gzip格式”。我究竟做错了什么?谢谢你的回答

1 个答案:

答案 0 :(得分:3)

compress()compress2()压缩到zlib format,而不是gzip format。您需要使用较低级别的函数来选择gzip格式。这些是deflateInit2()deflate()deflateEnd()。请阅读zlib.h中有关这些功能的文档。之后,您还应该查看heavily documented example of their use