Cprogramming-c-command-line-arguments

提供:Dev Guides
移動先:案内検索

C-コマンドライン引数

実行時にコマンドラインからCプログラムにいくつかの値を渡すことができます。 これらの値は*コマンドライン引数*と呼ばれ、特にコード内でこれらの値をハードコーディングするのではなく、外部からプログラムを制御する場合、プログラムにとって重要です。

コマンドライン引数はmain()関数引数を使用して処理されます。 argc は渡された引数の数を指し、 argv [] はプログラムに渡された各引数を指すポインター配列です。 以下は、コマンドラインから提供された引数があるかどうかをチェックし、それに応じてアクションを取る簡単な例です-

#include <stdio.h>

int main( int argc, char *argv[] )  {

   if( argc == 2 ) {
      printf("The argument supplied is %s\n", argv[1]);
   }
   else if( argc > 2 ) {
      printf("Too many arguments supplied.\n");
   }
   else {
      printf("One argument expected.\n");
   }
}

上記のコードをコンパイルして単一の引数で実行すると、次の結果が生成されます。

$./a.out testing
The argument supplied is testing

上記のコードが2つの引数を使用してコンパイルおよび実行されると、次の結果が生成されます。

$./a.out testing1 testing2
Too many arguments supplied.

引数を渡さずに上記のコードをコンパイルして実行すると、次の結果が生成されます。

$./a.out
One argument expected
*argv [0]* はプログラム自体の名前を保持し、 *argv [1]* は指定された最初のコマンドライン引数へのポインターであり、* argv [n]は最後の引数であることに注意してください。 引数が指定されていない場合、argcは1になります。1つの引数を渡すと、 *argc* は2に設定されます。

すべてのコマンドライン引数をスペースで区切って渡しますが、引数自体にスペースがある場合は、二重引用符 ""または単一引用符 で囲んで引数を渡すことができます。 上記の例をもう一度書き直して、プログラム名を出力し、二重引用符で囲んでコマンドライン引数を渡します-

#include <stdio.h>

int main( int argc, char *argv[] )  {

   printf("Program name %s\n", argv[0]);

   if( argc == 2 ) {
      printf("The argument supplied is %s\n", argv[1]);
   }
   else if( argc > 2 ) {
      printf("Too many arguments supplied.\n");
   }
   else {
      printf("One argument expected.\n");
   }
}

上記のコードをコンパイルし、スペースで区切られた単一の引数を使用して二重引用符で囲んで実行すると、次の結果が生成されます。

$./a.out "testing1 testing2"

Progranm name ./a.out
The argument supplied is testing1 testing2