这是我的代码的最新版本。感谢您的 zpipe.c,它现在适用于我所有的 gunzip 文件,无论它们的大小如何。但是我不明白的是,在内循环中 printf("%s", out) 仍然打印相同的初始结果(在第一个循环中解压的部分)。但是在解压文件 file.txt 中,一切正常。一切正常解压正常。我必须在每个内部循环中处理解压缩的输出,实际上我不需要输出文件(file.txt)。
while (1) {
int bytes_read;
bytes_read = fread (in, sizeof (char), sizeof (in), file);
printf("hello");
FAIL (ferror (file), "read");
strm.avail_in = bytes_read;
printf("%i\n",bytes_read);
getchar();
if (strm.avail_in==0)
break;
strm.next_in=in;
do {
strm.avail_out = CHUNK;
strm.next_out=out;
CALL_ZLIB(inflate (&strm, Z_NO_FLUSH));
printf ("%s", out);
getchar();
have=CHUNK-strm.avail_out;
fwrite(out,1,have,f2);
} while (strm.avail_out == 0);
if (feof (file))
{
inflateEnd (& strm);
break;
}
}