如何从zlib流中读取任意字节?

时间:2010-11-12 11:15:05

标签: c zlib inflate

我想将zlib流的inflate()的输出一次一个字节地读入缓冲区,这样我就可以解析出单行。

有没有办法指定inflate()返回的字节数,以便我可以查看换行符?

2 个答案:

答案 0 :(得分:2)

当您致电inflate()时,您会将指针传递给z_stream_s结构。该结构的z_stream_s::avail_out成员变量完全用于指定输出缓冲区的大小。

答案 1 :(得分:2)

这可能会带来可怕的性能,因为inflate()功能可能会产生一些启动成本。

我建议只使用合理的输出缓冲区大小,然后在每次调用inflate()后迭代缓冲区,收集找到的所有完整行。当然,很可能会有一个“尾巴”,即一条不完整的线,你需要跟踪下一轮。