여러 개의 하위 폴더가있는 압축을 풀 수있는 .zip 파일이 있습니다. zlib.h 라이브러리 함수를 사용하여 .zip 파일의 압축을 풉니 다. 이 소스 코드와 함께zlib.h 라이브러리를 사용하여 .zip 파일을 폴더로 압축 해제하는 방법은 무엇입니까?
#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;
}
문제는이 폴더에있는 .zip 파일을 압축 해제하지, 다시 같은 내용으로 zip 파일 "1.zip"를 창조하고있다. 이 문제가 해결되는 데 도움이 될까요?
ZLIB를 사용하여이 작업을 완료; 'gzip' 스트림을 압축 해제합니다. libarchive로 더 나을 것입니다. –