所以我在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;
}
Run Code Online (Sandbox Code Playgroud)
在gzread("STATUS: %d\n",status);返回-2,我不知道为什么.任何帮助,将不胜感激.
模式"w"表示您正准备创建新存档:
file = gzopen("beowulf.txt", "w");
Run Code Online (Sandbox Code Playgroud)
您刚刚将文件截断为零长度.
此外,您应该使用二进制模式标志:"wb"或"rb".
另外,你假设的.gz-archive有一个扩展名有点奇怪.txt.
阅读文档,文档规则.:)