所以我在Ubuntu上使用zlib包。我正试图找出如何正确使用gzopen和gzread,这就是我目前所拥有的
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <zlib.h>
#define NUM_BUFFERS 8
#define BUFFER_LENGTH 1024
char buf[BUFFER_LENGTH];
int main(int argc, const char* argv[])
{
int status;
gzFile file;
file = gzopen("beowulf.txt", "w");
int counter = 0; /*when the counter reachers BUFFERS_FULL, stop*/
if(file == NULL)
{
printf("COULD NOT OPEN FILE\n");
return 1;
}
while(counter < NUM_BUFFERS)
{
status = gzread(file, buf, BUFFER_LENGTH - 2);
printf("STATUS: %d\n", status);
buf[BUFFER_LENGTH - 1] = "\0";
printf("%s\n", buf);
counter++;
}
gzclose(file);
printf("STATUS: %d\n", status);
return 0;
}
gzread("STATUS: %d\n",status);
返回-2,我不知道为什么。任何帮助都将不胜感激。 最佳答案
模式"w"
表示您正在准备创建新存档:
file = gzopen("beowulf.txt", "w");
您刚刚将文件长度截断为零。
此外,还应使用二进制模式标志:
"wb"
或"rb"
。另外,假设的.gz归档文件有一个扩展名
.txt
,这有点奇怪。阅读docs,docs规则。:)
关于c - zlib,c和gzread,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12458711/