main関数の引数について
linuxをいじっていて初めて意識したので、メモしときます。
OS載せてないマイコンのプログラムとかばっかり作ってたので、
main関数の引数なんてまったく意識したことなかったなぁ・・・。
さて、以下のようなプログラムで勉強します。
環境はRaspberry Piです。ファイル名はarg_test.cで作ってみた。
#include <stdio.h> int main(int argc, char *argv[]) { int i; printf("arg test!!\n"); printf("argc = %d\n", argc); for ( i = 0; i < argc; i++ ) { printf(argv[i]); printf("\n"); } return 0; }
んでコンパイル
cc -o arg_test arg_test.c
するとarg_testって実行ファイルができてると思うので、こいつで実験。
まずは普通に実行してみる。
sudo ./arg_test
実行結果は↓みたいになってます。
arg test!! argc = 1 ./arg_test
引数は1個で./arg_testですよってことで理解しました。
次は引数を追加して実行してみます。abc と defね。
sudo ./arg_test abc def
実行結果↓
arg test!! argc = 3 ./arg_test abc def
ということでmain関数の引数でプログラムの動作を切り分けることができそうだなぁって勉強になりました。