さて、能書きはこれくらいにして、実際どのように書けば 実行ファイル、つまり main 関数に引数を取らせる事ができるかを 示しましょう。以下はその例です。
#include < stdio.h > #include < stdlib.h > /* このライブラリは include しなくてはならない 下で使う atoi, atof はこの中 */ int main(int argi, char **argv){ /* 変数名(argi,argv)は適当でOK。 argi には、引数が何個あるかが入る。 実行ファイルの名前(たとえば a.out) は1つと数えられるので注意。 argv はキャラクタ型のポインタへのポインタ。 (早い話が1文字を各要素に持つ行列のこと) 第0行が実行ファイルの名前で、第1行が第1引数、第2行が第1引数、、、となる。 prompt> a.out 100 3.8 の場合、argv 行列の具体的な形は、 |a|.|o|u|t| |1|0|0| |3|.|8| の様に入っている */ int i; double x; if(argi == 3){ /* 必ずしも必要ではないが、入れておくと便利 */ i = atoi(argv[1]); /* 第1引数の 100 はあくまでも文字なので、 ここで int 型の数字に変える */ x = (double)atof(argv[2]); /* 第2引数の 3.8 もあくまでも文字なので、 ここで float 型の数字に変えて double にキャストする */ } else{ /* 引数が二つ以外だったらここ */ printf("Usage: i x\n"); } return 0; /* 正常終了したら int 0 を返す */ }