main関数の引数

ところで、いつも必ず書くmain関数ですがこの引数は一体なんでしょうか。

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

}

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

argvは文字列の配列です。

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

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

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

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

#pragma hdrstop
#include <condefs.h>
#include <stdio.h>

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;
}

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

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

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

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

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

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

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

つまり、この場合

char *argv[] ={"Z:\\プログラミング論B\\args\\Project2.exe", "h1", "h2", "h3"};

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

ところで、文字列中の\を表すときは\\とすることに注意してください。

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