ホームページ > バックエンド開発 > C++ > C の `system()` 関数を使用するときにパラメータ内のスペースを処理するにはどうすればよいですか?

C の `system()` 関数を使用するときにパラメータ内のスペースを処理するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-30 15:27:26
オリジナル
722 人が閲覧しました

How to Handle Spaces in Parameters When Using C  's `system()` Function?

パラメータにスペースが含まれる C system() 関数エラー

問題ステートメント

C で system() 関数を使用して実行可能ファイルを実行する場合パラメータを使用する場合、実行可能ファイルのパスとパラメータとして渡されたファイルのパスの両方にスペースが含まれている場合、エラーが発生します。エラー メッセージは次のとおりです。

The filename, directory name, or volume label syntax is incorrect.
ログイン後にコピー

説明

system() 関数は、システム コマンドを Windows コマンド プロセッサ (cmd) に渡して実行します。コマンドにスペースが含まれている場合、コマンド プロセッサは最初と最後の二重引用符の間のすべてを 1 つの引数として解釈します。ただし、この場合、実行可能ファイルのパスを囲む二重引用符とパラメータ ファイルのパスを囲む二重引用符が競合を引き起こしています。

解決策

この問題を解決するには、追加の double のセットを使用します。コマンド全体を囲むには引用符を追加する必要があります。このように、コマンド プロセッサは、スペースやその他の二重引用符が含まれている場合でも、これらの最も外側の二重引用符内のすべてを 1 つの引数として扱います。

<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
ログイン後にコピー

補足説明

  • cmd /S /C フラグを system() 関数呼び出しに追加すると、文字列が常にケース 2 のシナリオとして解析され、二重引用符が引数の一部として扱われるようになります。
<code class="cpp">system("cmd /S /C \"\"D:\test\" nospaces \"text with spaces\"\"");</code>
ログイン後にコピー
  • この引用メカニズムを使用すると、実行可能ファイルとパラメータの両方のパス内のスペースによって引き起こされるエラーを克服できます。

以上がC の `system()` 関数を使用するときにパラメータ内のスペースを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート