J'ai un fichier .zip à décompresser qui contient plusieurs sous-dossiers. J'utilise la fonction de bibliothèque zlib.h pour décompresser le fichier .zip. problèmeComment décompresser un fichier .zip dans un dossier en utilisant la bibliothèque zlib.h?
#include<stdio.h>
#include<zlib.h>
#define MAX_MOI_PATH 200
#define READ_BLOCK_SIZE 1024*16
BOOL DCompressFile(char *SourceFILENAME, char *DestinationFILENAME)
{
char buffer[READ_BLOCK_SIZE];
unsigned long dwBytesRead;
unsigned long numberOfBytesWritten;
Bool status = false;
char cFilename[MAX_MOI_PATH];
int pathIndex=0;
char FileMode[4] = "w";
gzFile * FileFd = (gzFile *)gzopen (SourceFILENAME, "rb");
if (FileFd)
{
FILE* handle = fopen(DestinationFILENAME, "wb");
if(handle != NULL)
{
status = true;
while (status)
{
dwBytesRead = gzread(FileFd, buffer, READ_BLOCK_SIZE-1);
buffer[dwBytesRead] = '\0';
if (dwBytesRead)
{
status = fwrite(buffer, 1 , sizeof(buffer) , handle);
if(!status)
status = false;
else if (dwBytesRead < READ_BLOCK_SIZE)
{
break;
status = false;
}
}
}
fclose(handle);
}
gzclose (FileFd);
}
return status;
}
int main()
{
DCompressFile("/home/vivek/zlib_test/1.zip","/home/vivek/zlib_test/1");
return 0;
}
avec ce code source, il crée à nouveau un fichier zip « 1.zip » avec un même contenu, pas décompressé le fichier .zip dans le dossier. aidez s'il vous plaît ce qui ne va pas avec ceci?
zlib ne peut pas décompresser les fichiers ZIP; il décompresse les flux 'gzip'. Vous seriez mieux avec libarchive. –