Saturday, September 1, 2018

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");
   }
}
上記のコードをコンパイルして1つの引数で実行すると、次の結果が得られます。
$./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




















No comments:

Post a Comment

Interfaces and their protocol stacks

インタフェースとそのプロトコルスタック 主要なネットワーク要素に精通した後、これら要素間のインタフェースをよりよく知る時期が来ています。 インタフェースは、MME、SGWおよびPGWが他のネットワーク要素(例えば、HSSまたはPCRF)と協働することを可能にする。 それらの...