The Zlib Compression Library

By Mark R. Nelson

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 ;
    }

Figure 3: The code to implement file compression.

Back to Article


Copyright © 1997, Dr. Dobb's Journal