1

可能重复:
用c打开一个rar文件

我必须使用 c 代码提取 rar 文件。首先,我试图找到图书馆。我从http://www.unrarlib.org/得到它。但它是 2002 年构建的。所以它不支持当前的 rar 格式。然后我检查了http://www.rarlabs.com/rar_add.htm。它有库,但在 c++ 中。我对c++一无所知,所以我不能使用它们。我尝试通过使用系统功能来使用命令行工具 unrar。当我在 CMD 中使用 unrar 时,它提取了文件,但是当我在 C 中使用它时,(命令是 system( "unrar -e -p password protected_file.rar");)它只是打开了档案。它没有提取文件。现在我不知道下一步该怎么办?有人可以建议我吗?

这是我用来打开 rar 文件的代码。在系统命令中,ranjit 是密码。它在模块+文件名中给出了错误未定义的符号系统。有谁能够帮我??两天以来,我一直在为此苦苦挣扎。

#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv)
     {
     char file[20];
     char file2[50] = "F:\\Program Files\\WinRAR\\unrar.exe";
     printf("enter the name of the rar file : ");
     gets(file);
     puts(file);
     system(("%s e -p ranjit %s >C:\stdout.log 2>C:\stderr.log",file2, file));
     getchar();
     return 0;
     }
4

1 回答 1

0

手册页unrar这里。根据手册,命令语法为:

unrar <command> [-<switch 1> -<switch N>] archive [files...] [path...]

您提到您正在使用该命令unrar -e -p password protected_file.rar来提取存档。尝试添加可选的最终参数[path...],看看是否有帮助。有可能,当路径被省略时,它被假定为当前目录。当您从 shell 运行命令时,一切都按预期工作。当您system在 C 中使用命令运行时,您不知道当前目录是什么。手动指定一个目录来提取存档,看看是否有任何改变。

如果仍有问题,请尝试将unrar命令的标准输出和标准错误重定向到文本文件。该实用程序可能会在控制台上为您提供您没有看到的重要信息,因为您没有直接启动它。尝试:

system("unrar -e -p password file.rar >C:\stdout.log 2>C:\stderr.log");

并在程序退出后检查日志文件。

于 2010-08-18T21:05:24.617 回答