如何直接在 C 语言中读取.gz文本文件



我有一个log_date.txt文件,我写了一些C代码来解析和减少它。 我通过使用fgets( buffer, 1024, fp )将每一行读取到我的缓冲区字符数组来解析它。 一切都基于带有换行符的文本文件,我逐行阅读文本。

随着时间的推移,在保留这些日志时,每个日志都gzip -9完成,从而导致log_20200101.txt.gz

想象一下,每天保存一个文件,当运行我的 C 代码读取任何选定的文件时,您必须事先手动执行gunzip log_20200101.txt.gz,完成后重新压缩它。 有没有办法在 C 中执行fopen并继续使用我的所有fgets()但它发生在.gz文件上?

繁荣

本质上适用于log.txtlog.txt.gz

# include <stdio.h>
# include <stdlib.h>
# include <zlib.h>
# define LL 8192   /* line length maximum */
int main ( int argc, char *argv[] )
{
gzFile fp;
char line[LL];
fp = gzopen( "log.txt.gz", "r" );
gzgets( fp, line, LL );
while ( ! gzeof( fp ) )
{
printf("%s", line );
gzgets( fp, line, LL );
}
gzclose( fp );
return 0;
}

最新更新