2

是否可以以fprintf将数据写入压缩文件的方式使用?例如:

fopen ("myfile.txt","w");

将写入纯文本文件。因此文件大小变得非常大。

4

3 回答 3

5

您可以使用zlib将数据写入压缩流。

gzFile fp;
fp = gzopen(NAME, "wb");
gzprintf(fp, "Hello, %s!\n", "world");
gzclose(fp);

像这样编译它:

gcc -Wall -Wextra -o zprog zprog.c -lz

用于zcat打印文件的内容。

于 2012-02-06T06:40:04.283 回答
3

如果您在一个有管道的系统上,微创的解决方案是打开一个通往外部gzip进程的管道。这样您就可以使用所有正常的 stdio 输出函数,而不必用 zlib 调用替换所有内容。

于 2012-02-06T06:47:09.283 回答
1

在 Linux 上,您可以使用zlib库(并将其链接为-lz)并使用其压缩流

于 2012-02-06T06:40:43.910 回答