Я понял это.Когда вы присваиваете значение для strm.avail_in, вы вводите введенные байты следующим образом:
input_len = strm.avail_in = NUMBER_OF_BYTES_READ_FROM_FILE_OR_STREAM;
Затем, когда вы запустите это:
ret = inflate(&strm, Z_NO_FLUSH);
Это должно обновить значение strm.avail_in с помощьюколичество оставшихся байтов от этой итерации инфляции.Разница между strm.avail_in и значением input_len заключается в количестве дефлированных байтов, прочитанных в этой итерации.Итак, что-то вроде этого:
read_bytes = input_len - strm.avail_in;
Надеюсь, это поможет кому-то еще в будущем.