スペースを含むパラメーターを使用すると C system() 呼び出しが失敗する
system() を使用してスペースを含むパラメーターを受け取るプログラムを実行すると、発生する一般的なエラーは次のとおりです:
The filename, directory name, or volume label syntax is incorrect.
これは、実行可能パスとパラメータ パスの両方にスペースが含まれている場合に発生します。
たとえば、次のコード:
<code class="cpp">#include <stdlib.h> #include <conio.h> int main() { system("\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\""); _getch(); }</code>
が生成されます。 "pdftotext" パスと PDF ファイル パスにスペースが含まれているためにエラー メッセージが表示されます。
この問題は、system() がその引数を cmd /k に渡し、最初の引用符文字を最初の引用符として解釈するために発生します。実行可能ファイル名の先頭と 2 番目の引用符が実行可能ファイル名の末尾になります。その結果、コマンド ラインが正しく解析されず、エラーが発生します。
この問題を解決するには、コマンドを二重引用符で囲むことができます。
<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
または、cmd /S特別な解析ルールを使用せずにコマンド ラインを強制的に厳密に解釈するために使用できます。
<code class="cpp">system("cmd /S /C \"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
これらのソリューションを適用すると、system() 呼び出しでスペースを含むパラメーターを使用してプログラムを正常に実行できます。
以上がC で `system()` を使用してスペースを含むパラメータを持つプログラムを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。