<参考プログラム>
#include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]){ /* argcは入力された項の数(コマンド + コマンドの引数の数) argvは、各引数の文字列へのポインター */ int i, j; if (argc != 3) { /* 実行時に引数がちょうど2つでないなら終了。mainも1つとして数えられていることに注意 */ exit (0) ; /* 何もしないで、ここで正常終了. exit(1)やreturn(1)として、OSに正常な終了0ではないことを示す場合もある */ } /* argv[0]は、コマンドそのもの。通常は使用しない */ i = atoi(argv[1]); /* 最初の引数の文字列を10進数に変換し、iに代入。1234という文字列を、加算できる1234という1つの整数データに変換 */ j = atoi(argv[2]); /* 2つ目の引数 */ printf("arg 1 = %3d, arg 2 = %3d: arg1 + arg2 = %5d\n", i, j, i+j); return 0; } <その実行例> (ソースプログラムを、0703.c) gcc 0703.c ./a.out 2 3 arg 1 = 2, arg 2 = 3: arg1 + arg2 = 5
<main 関数の引数について>
main 関数の引数、(char *argv[]) は
<実行例> (ソースプログラムを 0703a.cとして、gcc -o 0703a 0703.c とした場合)
0703a 5
0 1 2 3 4 0 . . . . . 1 . . . . . 2 . . . . . 3 . . . . . 4 . . . . .
<ヒント>
解答例 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]){ int i,j,n; /* 完成させなさい */ /* 以下、解答を公開します。参考にしてください */ if (argc != 2) exit(0); n = atoi(argv[1]); printf(" "); for (i = 0; i < n; i++) printf("%3d", i); printf("\n"); for(i = 0; i < n; i++){ printf("%3d", i); for(j = 0; j < n; j++) printf(" ."); printf("\n"); } return 0; }