我用它来解压缩GZIP压缩文件" input.gz"进入未压缩的" output.file"。它运行得非常好,除了我需要一个固定大小的缓冲区(在这种情况下为1MB),如果输出变大,字节就会被切断。有没有办法让它与任何输出大小一起使用?
#include "zlib.h"
#include <stdio.h>
int main()
{
char buf[1024*1024];
gzFile in = gzopen("input.gz","rb8");
int len = gzread(in,buf,sizeof(buf));
gzclose(in);
FILE* out = fopen("output.file", "wb");
fwrite(buf,1,len,out);
fclose(out);
free(buf);
return 0;
}
答案 0 :(得分:2)
gzread
与fread
的工作方式相同。对gzread
的连续调用只是从该文件中读取更多数据。我还没有对代码进行测试,但这应该可以正常工作。
#include "zlib.h"
#include <stdio.h>
int main() {
char buf[1024];
gzFile in = gzopen("input.gz","rb8");
FILE* out = fopen("output.file", "wb");
while (int len = gzread(in, buf, sizeof(buf)))
fwrite(buf, 1, len, out);
gzclose(in);
fclose(out);
return 0;
}