|
おかげさまで現在順調に解凍ツールができているのですが
解凍先のパス指定で c:\output と最後に\をつけない状態でも解凍できるようにしたいのですがどうやったらいいのでしょうか?(c:\output\だとちゃんと解凍してくれます)
パスが入ってるdistStrの検索をして最後に\を付加するやり方でいいのでしょうか?
""(ダブルクォーテーション)の兼ね合いもあってよくわかりません・・・
解決策がありましたら教えていただきますようお願いします
//各オプションから文字列抽出処理
int o size = 0;//変数の宣言
for (o = 1; o < argc; o++)
size += int(strlen(argv[o]) + 1);//各オプション文字列数に+1をする
char *command_line = new char[size + 1];
command_line[0] = '\0';
for (o = 1; o < argc; o++)
{
//各オプション文字列を半角スペースで区切る
strcat(command_line argv[o]);
strcat(command_line " ");
}
//入力元のパスに何も文字が入ってない場合はプログラム終了
if (argv[1]==NULL)
{
printf("Option error : input error");
return 0;//プログラム終了
}
//解凍元・解凍先のパス入力処理
//解凍元パスの文字列を格納
sprintf(sourceStr "%s"argv[1]);
//解凍先のフォルダパスの文字列を格納
sprintf(distStr "%s"argv[2]);
// プログラムで利用するAPI関数をtypedefで宣言します
//書庫操作のAPI関数
typedef int(WINAPI *UNLHA)(const HWND LPCSTR LPSTR const DWORD);
// LoadLibraryでDLLを開きます。(DLLの読み込み)
lib = LoadLibrary("UNLHA32.dll");
//API関数へのアドレスを、GetProcAddressでキャストする。
UNLHA Unlha = (UNLHA)GetProcAddress(lib"Unlha");//APIへのアドレスを取得
//解凍プログラム
/*必要な情報(解凍元、解凍先、必要ならオプション設定や解凍するファイル)を取得*/
//入力したパスをコマンドへ格納
sprintf(cmdStr "x -gm -c1 -n \"%s\" \"%s\" \n" sourceStr distStr);
//バッファサイズ指定
char resBuf[BUF_LEN];
//Unlhaを使用して解凍
int resultCode=Unlha(NULLcmdStrresBufBUF_LEN);
//printf("%s\n"cmdStr);//確認の為cmdStrに格納されてる文字列を表示
//解凍に成功したとき
if(resultCode==0) printf("Extract : %s\n"distStr);
else
{
//解凍に失敗したとき
printf("Output error : %s\n"distStr);
}
// ロードしたDLLを開放します。
FreeLibrary(lib);
|
|