這可能是一個愚蠢的問題。當我試圖解壓縮內存中的壓縮數據時,出現錯誤。這是代碼。使用zlib時解壓縮錯誤
#include <zlib.h>
#include <stdio.h>
#include <stdlib.h>
int readFile(char *fname, char buf[]) {
FILE *fp = fopen(fname, "rb");
if (fp == NULL) { printf("Failed to open %s\n", fname); exit(0);}
int n = fread(buf, 1, 0x100000, fp);
fclose(fp);
return n;
}
char buf[2][0x10000];
int main(int argc, char *argv[]) {
long n = readFile(argv[1], &buf[0][0]);
unsigned int *pInt = (unsigned int*) (&buf[0][0]);
printf("n=%d %08x\n", n, *pInt);
long m = 0x10000;
int rc = uncompress(&buf[1][0], &m, &buf[0][0], n);
printf("rc = %d %s\n", rc, &buf[1][0]);
return 0;
}
GOT錯誤:從由運行`gzip的te.html」獲得
./a.out te.html.gz
n=169 08088b1f
rc = -3
te.html.gz。
謝謝!
謝謝@Wumpus Q. Wumbley。不知道是否可以使用zlib解壓縮gzip內容。 – packetie