是否可以以将数据写入压缩文件的方式使用fprintf
?
例如:
fopen ("myfile.txt","w");
将写入纯文本文件。因此文件大小变得非常大。
答案 0 :(得分: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
打印文件内容。
答案 1 :(得分:3)
如果您使用的是具有管道的系统,那么微创解决方案就是打开到外部gzip
进程的管道。这样你就可以使用所有正常的stdio输出函数,而不必用zlib调用替换所有东西。
答案 2 :(得分:1)
在Linux上,您可以使用zlib库(并将其链接为-lz
)并使用其compressed streams