ホームページ  >  記事  >  バックエンド開発  >  C で `system()` を使用してスペースを含むパラメータを持つプログラムを実行する方法

C で `system()` を使用してスペースを含むパラメータを持つプログラムを実行する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 02:37:30942ブラウズ

How to Execute Programs with Parameters Containing Spaces Using `system()` in C  ?

スペースを含むパラメーターを使用すると 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。