C言語のコマンドライン引数の覚書

はじめに

随分前にこの記事の下書きを書いたのですが,公開するのを忘れていました.
C言語コマンドライン引数について説明します.

main関数の引数

main関数は実は2つの引数をとることができる.

具体的には次のmainArgs.cのようにできる.

//mainArgs.c

#include <stdio.h> 

int main(int argc, char *argv[] ){  
  for(int i=0; i<argc; i++){  
    char *p = argv[i];  
    printf("argv[%d] = %s \n", i, p);  
  }  
}  
$ gcc -o mainArgs mainArgs.c
$ ./mainArgs this is arg
argv[0] = ./mainArgs
argv[1] = this 
argv[2] = is 
argv[3] = arg 

mainArgs.cのargcとargvはコマンドライン引数と呼ばれるもので,
そのコードがコマンドラインから呼ばれるときのオプションによって定められる.

argc

main関数の第1引数すなわちargcは
int型の変数で,コマンドラインから実行されたときの”実行コマンド名とオプションの個数”を表す
”実行コマンド名”の個数は1つなので”オプションの個数+1”ともいえる.

この実行例では$ ./mainArgs this is argとしているから,argcの値は4になる.

argv

次にmain関数の第2引数すなわちargvは
char型ポインタの配列で,”実行コマンドとオプションのそれぞれの文字列”がその要素となる
この実行例では$ ./mainArgs this is argとしているから,argvのそれぞれの要素の値は次のようになる.

argv
argv[0] ./mainArgs
argv[1] this
argv[2] is
argv[3] arg

おわりに

コマンドライン引数を使えばUNIXコマンドもどきのようなものを作れてたのしい.