问题描述
假设我有一个文件file
,它是32.2 MB。然后我就这样读了
gzread(file,buffer,buffer_size);
(或也许像fread
)。但是,假设我设置了buffer_size = 0x10000
,大约65 KB。
是不是每次我调用gzread时,它都会转到下一个〜65kb的块?
我正在阅读一个带有while循环的项目:
while (ks_getuntil(ks,KS_SEP_LINE,&str,&dret) >= 0) {
stuff;
}
gzread
行位于ks_getuntil
内部,而ks
是buffer
所在位置和file
所在位置(和{已经为整个程序设置了{1}}。不在while循环中对其进行操作。
这似乎使buffer_size
在gzread
的大块中移动是可行的,但不确定并认为要检查。
解决方法
您尝试过吗?是的,它就是这样做的。 gzread()
返回读取的内容。这将是请求的数量,如果已达到文件末尾,则将更少。