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 はパスワードです。モジュール+ファイル名で未定義のsymbol_systemというエラーが発生しています。誰でも私を助けることができますか?? 私は2日以来これに苦労しています。

#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...]それが役立つかどうかを確認してください。省略した場合、パスは現在のディレクトリと見なされる可能性があります。シェルからコマンドを実行すると、すべてが期待どおりに機能します。C 内からコマンドを使用して実行するとsystem、現在のディレクトリがわかりません。アーカイブを抽出するディレクトリを手動で指定し、それによって何かが変わるかどうかを確認します。

それでも問題が解決しない場合は、unrarコマンドの標準出力と標準エラーをテキスト ファイルにリダイレクトしてみてください。ユーティリティは、コンソールを直接起動していないために表示されていない重要な情報をコンソールに表示する場合があります。試す:

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

プログラムの終了後にログファイルを確認してください。

于 2010-08-18T21:05:24.617 に答える