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

Patricia Arquette
リリース: 2024-11-02 02:37:30
オリジナル
941 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!