Как я могу прочитать текстовый файл .gz прямо в C - PullRequest
0 голосов
/ 27 января 2020

У меня есть файл log_date.txt, в который я написал некоторый код C, чтобы проанализировать и уменьшить его. Я анализирую его, используя fgets( buffer, 1024, fp ), чтобы прочитать каждую строку в мой буфер массив символов. Все основано на текстовом файле с символами новой строки, и я читаю текст построчно.

При ведении этих журналов с течением времени каждый из них сделал gzip -9, что привело к log_20200101.txt.gz

Представьте себе, что файл сохраняется каждый день, и когда я запускаю мой код C для чтения любого выбранного вами кода, вам придется вручную сделать gunzip log_20200101.txt.gz заранее, и когда это будет сделано, повторно распакуйте его. Есть ли способ в C сделать fopen и продолжать использовать все мои fgets(), но произошло ли это с файлом .gz?

1 Ответ

1 голос
/ 27 января 2020

boom

работает как на 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;
}
...