>> C言語入門トップに戻る

main関数の引数

今回はmain関数の引数について説明します。

今までmain関数の引数はvoid型にしていて、
何も指定していませんでした。
ですがmain関数も引数を取ることができます。
その引数のことを、コマンドライン引数といいます。
この引数をつけると、コマンドプロンプトからパラメータを付加して実行することが出来ます。
まずは下記のコードを見てください。

#include <stdio.h>

void func(int*);

int main(int argc,char **argv)
{
	printf("%d\n",argc);

	//最初のアドレスには実行ファイルのパスが入っている
	printf("%s\n",*argv);

	return 0;

}

これを実行すると私の環境ではこうなります。


main関数の第一引数は、コマンドライン引数に指定した引数の数を受け取ることが出来ます。
つまりint型になります。
第二引数は、コマンドライン引数に指定した文字列のポインタの配列を受け取ることが出来ます。
文字列のポインタの配列なので、ポインタのポインタ型になります。

実は何もパラメータを付加せずに実行しても一つだけ最初からパラメータがあり、
最初の配列には実行ファイルのパスが入っています。
つまり第一引数のコマンドライン引数の数は1になります。
なので上記のコードを実行すると、あなたが実行した実行ファイルの場所が表示されるはずです。

当然自分でパラメータを付加して実行することも出来ます。
下記のコードを見てください。

#include <stdio.h>

void func(int*);

int main(int argc,char **argv)
{
	//引数が1以上ならパラメータが付加されてる
	if(argc>1){
		//引数の数だけループして表示。
		for(int i=0;i<argc;++i){
			printf("%s\n",argv[i]);
		}
	}

	getchar();

	return 0;

}

これを実行するにはコマンドプロンプトを起動し、

実行ファイル名.exe パラメータ パラメータ1 パラメータ3・・・

と書きます。
例えば、main.exeにパラメータA、B、Cをつけて実行する場合は、
main.exe A B C
と書きます。
パラメータを複数指定する場合は一つずつスペースを空けて書きます。
コマンドプロンプトから実行するときは、必ずカレントディレクトリを実行ファイルのあるディレクトリに
移動させてから実行させてくださいね。
上記のパラメータで実行すると、実行ファイルのパス名が表示された後に、A、B、Cと順番に表示されます。
引数の数は、渡した3つと必ずある実行ファイルのパス名の一つを足して4になります。

パラメータを指定した場合も、最初のパラメータはプログラムの実行ファイルのパスが入っています。
これは変わりません。

これを活用すれば、指定するパラメータによって処理を振り分けられるので便利ですよね。
今回の説明は以上です。

次回はビット演算について説明します。


>> 【ビット演算】に進む
>> C言語入門トップに戻る