gpt4 book ai didi

c++ - C/C++解压GZIP时任意输出大小

转载 作者:行者123 更新时间:2023-11-28 02:47:29 25 4
gpt4 key购买 nike

我正在使用它来将 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;
}

最佳答案

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;
}

关于c++ - C/C++解压GZIP时任意输出大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23962782/

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