C/ c++解压GZIP时任意输出大小
C/C++ Arbitrary output size when decompressing GZIP
我用它来解压缩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++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 如何为 OpenMP 中任意数量的线程获取相同的并行化输出,以便 if-else,增量
- 如何使用Coin3d / OpenInventor添加任意数量的引擎输出
- 来自任意取消引用指针的输出
- 给定一个区间向量,输出区间内重叠次数最多的任意一个数字
- 如何在C++中获取任意 (STL) 输出迭代器的"assignable type"
- 输出任意数字作为unicode
- 输出任意c++表达式的类型
- (c++)将任意文件读取为二进制文件,并将数据作为单独的文本文件输出
- C/ c++解压GZIP时任意输出大小