1.源码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <zip.h>
int main()
{
char buffer[1024];
char *path = "./1.zip";
char *fname = NULL;
zip_error_t *zerr;
int err = 0;
zip_t *archive = NULL;
zip_file_t *file = NULL;
int n = 0;
int i;
//打开zip压缩文件
archive = zip_open(path, ZIP_RDONLY, &err);
if(archive == NULL)
{
printf("open 1.zip failed, err=%d\n", err);
return -1;
}
//输入zip密码
zip_set_default_password(archive, "123456");
//获取zip中文件个数
n = zip_get_num_files(archive);
if(n < 0)
{
printf("get num of 1.zip failed\n");
zip_close(archive);
return -1;
}
printf("num=%d\n", n);
for(i=0; i<n; i++)
{
//获取文件名
fname = (char *)zip_get_name(archive, i, ZIP_FL_ENC_RAW);
printf("file name: %s\n", fname);
//打开文件
file = zip_fopen_index(archive, i, ZIP_FL_UNCHANGED);
if(file == NULL)
{
zerr = zip_get_error(archive);
printf("open 1.txt failed: %s\n", zip_error_strerror(zerr));
zip_close(archive);
return -1;
}
//读文件的内容
memset(buffer, 0x00, sizeof(buffer));
zip_fread(file, buffer, 1023);
printf("%s", buffer);
//关闭文件
zip_fclose(file);
}
//关闭压缩文件
zip_close(archive);
return 0;
}
2.编译源码
$ gcc -o example example.c -lzip
网友评论