main関数の引数

ところで、いつも必ず書くmain関数ですが、引数を与えることができます。この引数はどのような時使うのでしょうか。

int main(int argc, char* argv[])
{

}

argcは整数型ですから数字です。これはargvの配列の要素数を表しています。

argvは文字列の配列です。

char* a;
とするとaはポインタになり、文字列(= char型の配列)の先頭を表すことは説明しましたが、

int a[ ];と同じようにポインタも配列に出来ます。

char* a[];は文字列の配列を表します。

以下のプログラムを見てください。

//プロジェクト名: argument1

int
main(int argc, char* argv[])
{
    for(int i = 0; i< argc; i++)
    {
        printf("%d番目の引数は「%s」\n", i+1, argv[i]);
    }

    getc(stdin);
    return 0;
}

このプログラムは、コマンドプロンプトから実行する必要があります。まずコンパイルして実行ファイルを作ってください。argument1.exeという名前になるはずです。

次に、スタート→プログラム→アクセサリ→コマンドプロンプトを実行してください。

後は、以下の画像を参考にして実行してみてください。

dirと打ってみましょう。フォルダの内容が表示されます。

cdコマンドで実行ファイルがあるフォルダへ移動しましょう。皆さんフォルダの中はそれぞれですから下の画像とは少し違うはずです。

cd コマンドはTabキーを使うと楽に入力できます。下の図では、cd スペースと入力した後dを入力して次にTabキーを押すと候補ができてDocumentsになります。次に\を入力してvを入力した後再びTabを押すとVisual Studio 2005が補完されます。このようにしてargument1まで続けます。

ここでdirと入力してフォルダの内容を確認してください。debugというフォルダがあるので、再び下図を参考に、そのフォルダに移動してください。

下の図のように何個か引数を与えて実行してみましょう。この例では
>argument1.exe h1 h2 h3
と入力しています。

すると、一番最初にフォルダを含む実行ファイルのファイル名が表示され、後にコマンドラインで与えたれた引数が表示されています。

つまり、この場合

char *argv[] ={"argument1.exe", "h1", "h2", "h3"};

と同等の代入がコマンドラインから与えられていることになります。

 

それでは、次に進みましょう。