美文网首页
c语言调用libzip库打开加密zip文件

c语言调用libzip库打开加密zip文件

作者: 一路向后 | 来源:发表于2021-01-10 17:23 被阅读0次

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

相关文章

网友评论

      本文标题:c语言调用libzip库打开加密zip文件

      本文链接:https://www.haomeiwen.com/subject/vwflaktx.html