Page 13 メイン関数

メイン関数引数

実はメイン関数に引数を持たせることができます。main()はプログラム起動時に最初に実行される関数ですが、プログラム実行時に打ち込んだ文字列とその数が引数になります。

int main(int 文字列の数, char* 文字列配列[])

第一引数を「argc」、第二引数を「argv」として、

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

と書くことが多いですが、変数名は別に何でも構いません。また、第二引数をポインタの配列ではなく、ポインタのポインタにする人もいます。

int main(int argc, char** argv)

どちらも扱いには大差ありません。ここでは、第一引数をargc、第二引数をargvという名前のポインタ配列にしたとして、話を進めていきます。

実際にプログラムを実行したとき、

./a.out ABCD

であれば、 argc = 2、 argv[0] = "./a.out"、 argv[1] = "ABCD"となります。プログラム名も引数に含まれることに注意してください。

さらに、

./a.out ABCD EFGH IJKL

とすれば、 argc = 4、 argv[0] = "./a.out"、 argv[1] = "ABCD"、 argv[2] = "EFGH"、 argv[3] = "IJKL"の4つが引数となります。

#include <stdio.h>

int main(int argc, char* argv[]){
        int i;
        for(i = 0; i < argc; i++){
                printf("%s\n",argv[i]);
        }
        return 0;
}

メイン関数戻り値

main()の戻り値はreturnでセットできます。0をセットすることが多いです。OSなどに戻り値を渡して終了します。

また、プログラムを途中で強制的に終了する場合はexit()関数を使用します。stdlib.hのインクルードが必要です。

void exit(int ステータス)

ステータスにセットした値がOSなどに渡されます。

戻る