c/c++プログラムmain関数パラメータ解析、およびパラメータ伝達の異なる方法

2176 ワード

1.プログラム実行時にパラメータを渡す異なる方法:
1)コマンドパラメータを通してパラメータを渡す;2)txtファイルでパラメータを読み込みます.
2.方法例
1)コマンドパラメータを介してパラメータを渡す,すなわちmain関数のパラメータを解析する.
main関数はパラメータを持たなくてもよいし、パラメータを持たなくてもよい.このパラメータはmain関数の形式パラメータと考えられる.C言語ではmain関数のパラメータは2つしかないと規定されており,この2つのパラメータはargcとargvと書くのに慣れている.したがって、C 99規格では、int main(void)/無パラメトリックint main(int argc,char*argv[])/有パラメトリックには当然、有パラメトリックが進化するので、以下の表記も正しい(同時に変量名は交換可能):int main(int argc,char**argv)/有パラメトリックの別の形式と規定されている
int parseOptions(int argc, char** argv, int &imgWid, int &imgHei, int &imgCnt)
{
    int i = 0;
    if(argc == 1)
    {
        return -1;
    }
    for (i = 1; i < argc; i++)
    {
        if (strcmp(argv[i], "-w") == 0)
        {
         imgWid = (int)atoi(argv[++i]);
        }
        else if (strcmp(argv[i], "-h") == 0)
        {
         imgHei = (int)atoi(argv[++i]);
        }
        else if (strcmp(argv[i], "-c") == 0)
        {
            imgCnt = (int)atoi(argv[++i]);
        }

        else
            return -1;
    }

    return 0;
}

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

    int imgWid, imgHei, imgCnt;

    if(-1 == parseOptions(argc, argv, imgWid, imgHei, imgCnt))
    {
        printf("Get parameter failed!
"); exit(-1); } ... }

実行方法:
a.vsで実行する場合:工程属性のコマンドパラメータ行に、-w 640-h 480-c 10と入力すればよい
b.DOSで生成する実行可能ファイルがexampleである.exeをDディスク内に置く場合は、D:example-w 640-h 480-c 10と入力すればよい
2)TXTファイルからパラメータを読み込む
int main(int argc, char** argv)
{

    int imgWid, imgHei, imgCnt;

    FILE* srcFile = NULL;

    srcFile = fopen("parameter_list.txt","r");
    if (srcFile == NULL)
   {
        printf("Open parameter_list failed!
"); exit(-1); } while (!feof(srcFile)) { fscanf(srcFile,"%d", &imgWid); fscanf(srcFile,"%d", &imgHei); fscanf(srcFile,"%d", &imgCnt); printf("imgWid=%d imgHei=%d imgCnt=%d
", imgWid, imgHei, imgCnt); ... } ... }

parameter_list.txtファイルのパラメータは次のとおりです.
640 480 10 1280 720 10 1920 1080 10 3840 2160 10