首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >libunrar RARReadHeader总是返回ERAR_BAD_DATA

libunrar RARReadHeader总是返回ERAR_BAD_DATA
EN

Stack Overflow用户
提问于 2016-01-19 03:29:39
回答 1查看 294关注 0票数 2

伙计们,我最近在做libunrar,但是当我使用RAR_OM_LIST选项时出错了,我可以打印rar文件中的第一项,但是之后得到了ERAR_BAD_DATA。下面是代码:

代码语言:javascript
运行
复制
struct RAROpenArchiveData openArcData = {
        .ArcName = (char *)"/Users/oxnz/Developer/Nanook/unrar/x.rar",
        .OpenMode = RAR_OM_LIST,
    };
    HANDLE hArcData = RAROpenArchive(&openArcData);
    if (openArcData.OpenResult == ERAR_SUCCESS) {
        struct RARHeaderDataEx headerDataEx;
        int ret;
        while (ERAR_SUCCESS == (ret = RARReadHeaderEx(hArcData, &headerDataEx))) {
            printf("file: [%s]\n", headerDataEx.FileName);
        }
        switch (ret) {
            case ERAR_BAD_DATA:
                printf("bad data\n");
                break;
            case ERAR_END_ARCHIVE:
                printf("END OF ARCHIVE\n");
                break;
            default:
                printf("unknown error: %d", ret);
                break;
        }
        RARCloseArchive(hArcData);
    }

如有任何资料,将不胜感激。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 03:42:42

每次调用RARReadHeaderEx之后,您都需要调用RARProcessFile,即使只是跳过数据。例如。

代码语言:javascript
运行
复制
while (ERAR_SUCCESS == (ret = RARReadHeaderEx(hArcData, &headerDataEx)))
{
    printf("file: [%s]\n", headerDataEx.FileName);
    if (ERAR_SUCCESS != (ret = RARProcessFile(hArcData, RAR_SKIP, NULL, NULL)))
        break;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34868048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档