さて、能書きはこれくらいにして、実際どのように書けば 実行ファイル、つまり 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 を返す */
}