Ich habe eine archive.zip, die zwei verschlüsselte ". Txt" -Dateien enthält. Ich möchte das Archiv dekomprimieren, um diese 2 Dateien zu erhalten.Entpacken Sie eine Zip-Datei mit zlib
Hier ist, was ich bisher getan habe:
FILE *FileIn = fopen("./archive.zip", "rb");
if (FileIn)
printf("file opened\n");
else
printf("unable to open file\n");
fseek(FileIn, 0, SEEK_END);
unsigned long FileInSize = ftell(FileIn);
printf("size of input compressed file : %u\n", FileInSize);
void *CompDataBuff = malloc(FileInSize);
void *UnCompDataBuff = NULL;
int fd = open ("archive.zip", O_RDONLY);
CompDataBuff = mmap(NULL, FileInSize, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
printf("buffer read : %s\n", (char *)CompDataBuff);
uLongf UnCompSize = (FileInSize * 11/10 + 12);
UnCompDataBuff = malloc(UnCompSize);
int ret_uncp ;
ret_uncp = uncompress((Bytef*)UnCompDataBuff, &UnCompSize, (const Bytef*)CompDataBuff,FileInSize);
printf("size of uncompressed data : %u\n", UnCompSize);
if (ret_uncp == Z_OK){
printf("uncompression ok\n");
printf("uncompressed data : %s\n",(char *)UnCompDataBuff);
}
if (ret_uncp == Z_MEM_ERROR)
printf("uncompression memory error\n");
if (ret_uncp == Z_BUF_ERROR)
printf("uncompression buffer error\n");
if (ret_uncp == Z_DATA_ERROR)
printf("uncompression data error\n");
Ich bekomme immer „Uncompression Datenfehler“ und ich weiß nicht, warum. Und dann würde ich gerne wissen, wie die 2 Dateien mit meinen Daten unkomprimiert abgerufen werden.
Oh wirklich, ich war sicher, dass zlib mit .zip behandeln würde .. trotzdem danke für information! :) – user1336204
Zlib kann in der Tat mit Zip-Verarbeitung helfen, und die Quelldistribution kommt mit beigetragenem Code, um Zip-Dateien zu verarbeiten. Siehe meine Antwort. –
Oh, und Libzip verwendet zlib. –