コマンドライン引数は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 expectedargv [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