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)/有パラメトリックの別の形式と規定されている
実行方法:
a.vsで実行する場合:工程属性のコマンドパラメータ行に、-w 640-h 480-c 10と入力すればよい
b.DOSで生成する実行可能ファイルがexampleである.exeをDディスク内に置く場合は、D:example-w 640-h 480-c 10と入力すればよい
2)TXTファイルからパラメータを読み込む
parameter_list.txtファイルのパラメータは次のとおりです.
640 480 10 1280 720 10 1920 1080 10 3840 2160 10
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