int main (int argc, char *argv[])
おなじないのごとくint main (int argc, char *argv[])と書くわけですが、こいつの扱い方をそろそろ調べてみようと思った。argcは引数の数で、argvはcharのポインタを要素とする配列。argv[0]には実行ファイルの名前が入る。なんで配列要素数を渡す必要があるかというと、関数内では配列要素数を(正確には)把握できないから(らしい)。int->shortのキャストとかまぁその辺だろうけど、これは後日調べる。
プログラム
#include <stdio.h> #include <stdlib.h> // argv is array that contains char pointer int main(int argc, char *argv[]) { int i; // get argv element for ( i = 0; i < argc; i++ ) { char *s = argv[i]; printf("%s\n", s); } // increment address, then get array element for ( i = 0; i < argc; i++ ) { printf("%s\n", *(argv+i)); } }
実行結果
kotaro@mac: > gcc main.c -o main.out; ./main.out 1 2 ./main.out 1 2 ./main.out 1 2
だんだん分かってきた(気がする)。そして、APUEは全然読み進められていない!