перенаправить вывод в сжатый формат (C) - PullRequest
2 голосов
/ 06 февраля 2012

Можно ли использовать fprintf таким образом, чтобы записывать данные в сжатый файл? Например:

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

запишет в простой текстовый файл. Таким образом, размер файла становится очень большим.

Ответы [ 3 ]

5 голосов
/ 06 февраля 2012

Вы можете использовать zlib для записи данных в сжатый поток.

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

Скомпилируйте это так:

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

Используйте zcat для печати содержимого файла.

3 голосов
/ 06 февраля 2012

Минимально инвазивное решение, если вы работаете в системе, в которой есть каналы, - открыть канал для внешнего процесса gzip. Таким образом, вы можете использовать все обычные функции вывода stdio без необходимости заменять все вызовами zlib.

1 голос
/ 06 февраля 2012

В Linux вы можете использовать библиотеку zlib (и связать ее как -lz) и использовать ее сжатые потоки

...