Dr. Dobb's Journal January 1997
#define BUFSIZE 1024 z_stream z;
char input_buffer[ BUFSIZE ]
char output_buffer[ BUFSIZE ];
FILE *fin;
FILE *fout;
int status;
...
z.avail_in = 0;
z.next_out = output_buffer;
z.avail_out = BUFSIZE ;
for ( ; ; ) {
if ( z.avail_in == 0 ) {
z.next_in = input_buffer;
z.avail_in = fread( input_buffer, 1, BUFSIZE , fin );
}
if ( z.avail_in == 0 )
break;
status = deflate( &z, Z_NO_FLUSH );
int count = BUFSIZE - z.avail_out;
if ( count )
fwrite( output_buffer, 1, count, fout );
z.next_out = output_buffer;
z.avail_out = BUFSIZE ;
}