这是我的代码的最新版本。感谢您的zpipe.c,它现在适用于我所有的枪械文件,无论其大小如何。但我不明白的是,在内部循环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;
}
}