我有一个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.txt
和log.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;
}