C 言語 | ポインター | main() 関数の引数

プログラムの起動時に、親プロセスやコマンドから渡された文字列を取得する方法を説明する。

コマンドライン引数

main() 関数も引数を受け取ることができる。それでは、どこから引数を受け取るのだろうか。親プロセスがプログラムを起動するときに、オプションを文字列として渡すことができる。通常はコマンドラインから渡される。これにより、プログラムの実行に必要な情報を指定できる。

main() 関数には 2 つの引数が渡される。1 つはコマンドラインから渡された引数の数である。もう 1 つは、コマンドライン引数として渡された文字列の配列である。慣例として、最初の仮引数を argc、2 番目の仮引数を argv と呼ぶ。argc には引数の数、argv には引数の文字列が格納される。一般的な main() 関数は、これまで使ってきた引数を受け取らない形式のほかに、次の形式を利用できる。

main() 関数

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

コマンドライン引数を処理する場合は、この形式を使う。仮引数名は任意だが、argument count を略した argc と argument vector を略した argv を使うのが慣例である。配列変数 argv にアクセスすると、指定した番号のコマンド文字列を取得できる。

コード 1

#include<stdio.h>

int main(int argc , char *argv[]) {
  int iCount;
 for(iCount = 0 ; iCount < argc ; iCount++)
    printf("%d번째 인수 = %s\n" , iCount + 1 , argv[iCount]);
  return 0;
}

コード 1 は main() 関数に渡された引数を表示する。argv[0] には必ず実行されたプログラム名が入る。argc1 より大きい場合は、コマンドライン引数が渡されている。

コマンドライン引数は文字列の表として格納される。argc を確認して argv の適切な要素にアクセスすれば、必要な引数を取得できる。実質的な最初の引数は argv[1]、最後の引数は argv[argc - 1] である。また、規格では argv[argc]NULL であることも保証されている。