可能重复:
opening a rar file by c
我必须使用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"
);)
它只是打开了archieve。它没有提取文件。现在我不知道接下来该做什么?任何人都可以建议我吗?
这是我用来打开rar文件的代码。在系统命令中,ranjit是密码。它在模块+文件名中给出错误undefined symbol_system。 有谁能够帮我??两天以来我一直在努力奋斗。
#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;
}
答案 0 :(得分:0)
unrar
的手册页为here。根据手册,命令语法为:
unrar <command> [-<switch 1> -<switch N>] archive [files...] [path...]
您提到您正在使用命令unrar -e -p password protected_file.rar
来提取存档。尝试添加可选的最终参数[path...]
,看看是否有帮助。有可能,当路径被省略时,该路径被假定为当前目录。从shell运行命令时,一切都按预期工作。当您在C中使用system
命令运行时,您不知道当前目录是什么。手动指定目录以将存档解压缩并查看是否有任何更改。
如果仍有问题,请尝试将unrar
命令的标准输出和标准错误重定向到文本文件。该实用程序可能会在控制台上提供您未看到的重要信息,因为您没有直接启动它。尝试:
system("unrar -e -p password file.rar >C:\stdout.log 2>C:\stderr.log");
并在程序退出后检查日志文件。