今まで、main 関数へ引数なしを意味する
int main(void) と記述、
実は main関数にも引数を渡すことができます。 この main関数に渡す引数のことを「コマンドライン引数」といいます。
コマンドライン引数
main関数へ渡せる引数は、
- 引数の総個数
- 引数の文字列を指すポインタの配列
の 2つです。
一般に
- int main(int argc, char *argv[]) と記述し、
- int argc: 引数の総個数(プログラム名も含む)
- char *argv[]: 引数の文字列を指すポインタの配列を表します。
とりあえず、下の例を見てみましょう。
(例)
#include <stdio.h> int main(int argc,char *argv[]) { int i; printf("引数の総個数 = %d\n", argc); for (i = 0; i < argc; i++) { printf("%d番目の引数 = %s\n", i, argv[i]); } return 0; }
例題は、command_line.c と保存して、コンパイルだけしてください。
dir コマンドで、command.exe ファイル生成されたと確認。
実行結果
Ctrl-Qでコマンドプロンプトを起動、 下記のコマンドを入れてください。
> command_line Kitty on your lap
E:\chen\My Documents\C>command_line Kitty on your lap 引数の総個数 = 5 0番目の引数 = E:\chen\My Documents\C\command_line.exe 1番目の引数 = Kitty 2番目の引数 = on 3番目の引数 = your 4番目の引数 = lap E:\chen\My Documents\C>
演習
演習1
教科書 P291
コマンドラインで数値を入力し、その合計値を求めるプログラムを作成してください。
プログラムソースファイルは、a8-5-1.c とする。
実行結果
> a8-5-1 10 15 22 45 9 66 71 4 37 82 合計は 361です
演習2
http://chenlab.net/2016/06/07/c-exercises8-pointer-summary/
を改造し、整数は配列ではなく、コマンドライン引数として引き渡し、引数を順に調べ、奇数の値のみ、別の大きさ10の整数型配列に代入しなさい。また、配列の中身と、何個格納したかを画面表示しなさい。
実行結果
> find_odd_number 10 15 22 45 9 66 71 4 37 82 実行結果 15 45 9 71 37 格納個数 = 5