2010-08-18 62 views
1

可能重复:
opening a rar file by c由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");) 它刚刚打开了该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; 
    } 
+1

为什么这被标记为功能性编程? – Greg 2010-08-18 20:33:51

+1

Duplicate:http://stackoverflow.com/questions/3514854/opening-a-rar-file-by-c – James 2010-08-18 20:49:24

+0

这个问题是延续http://stackoverflow.com/questions/3514854/opening-a-rar -file-by-c,由同一作者发布。作者应该将附加信息编辑到原始问题中。 – bta 2010-08-18 20:54:51

回答

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"); 

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