1

最終的に呼び出すVS2005で既存のCプログラムを修正しようとしています

int system(command) //in C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\system.c)

パラメータ値付き

start C:\Program Files\VideoLAN\VLC\vlc.exe C:\Documents and Settings\me\My Documents\My Music\09 - Track09.mp3

開始するプログラムとファイル名のパスは両方とも、取得した環境変数から形成され、コマンド start が char バッファーの先頭に追加されます。環境変数は次のとおりです。

  • %VLCPATH%価値のあるものC:\Program Files\VideoLAN\VLC

  • %MUSIC%価値のあるものC:\Documents and Settings\me\My Documents\My Music

XPコマンドプロンプトでこれを試してみましたが、パスにスペースが含まれていない場合はすべて正常に機能します。これも機能します:

"%VLCPATH%\vlc.exe" "%MUSIC%\09 - Track09.mp3"

それで、私は何をすべきですか?

  1. 環境変数を編集して引用符を付けますか? (そうは思わないでください)
  2. コマンドにパラメーターとしてファイルがあるかどうかを確認し、エスケープ文字を含む引用符をおそらく両方に追加して、開始という単語を削除しますか?
  3. 私が気づいていない賢明な/エレガントなことをする
4

2 に答える 2

2

たとえば、すべてのパラメーターを引用してみます。

int main(int argc, char *argv[])
{
  char command[1024];
  char *title = "test vlc";
  char *executable = "vlc.exe";
  char *param = "09 - Track09.mp3";

  snprintf(command, sizeof(command), "start \"%s\" \"%s\" \"%s\"",
           title, executable, param);
  printf("%s\n", command);
  system(command);

  return EXIT_SUCCESS;
}

実行可能ファイルとパラメーターを明らかに置き換えますが、実行可能ファイルとパラメーターを決定します。

于 2010-08-18T14:07:36.013 に答える
1

Windows では、開始するプログラム パスとパス名を含む引数の両方にスペースが含まれる場合、それらを二重引用符 ("like this") で囲む必要があります。

例えば:

"C:\Program Files\VideoLAN\VLC\vlc.exe" "C:\Documents and Settings\me\My Documents\My Music\09 - Track09.mp3"

于 2010-08-18T14:05:39.853 に答える