美文网首页
c语言调用libzip库遍历zip文件

c语言调用libzip库遍历zip文件

作者: 一路向后 | 来源:发表于2021-01-10 17:07 被阅读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;
            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中文件个数
            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)
                    {
                            printf("open 1.txt failed\n");
                            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/cxflaktx.html