だから私はコマンドラインのパラメータは常にnullで終了するのだろうか?グーグルはこれがそうであることを示しているが、これが常に真実であることを保証できるか?char * argv [] main nullの引数は終了していますか?
int main(int argc, char** argv)
{
char *p;
for(int cnt=1; cnt < argc; ++cnt)
{
p = argv[cnt];
printf("%d = [%s]\n", cnt, p);
}
return 0;
}
$ MyProgram -arg1 -arg2 -arg3
1 = -arg1
2 = -arg2
3 = -arg3
はい、これは該当します。 – kol
分:NULLが終了していないとどうなりますか? –
分を考える... char []とchar *は自動的にCスタイルの文字列を意味しません。 明らかに、コマンドライン文字列全体はNULLで終端されていますが、コマンドラインで渡された個々の文字列がNULLで終了するたびに変換する必要はありません。 argvがコマンドライン上の空白を取り除くだけで、Cスタイルの文字列ではなくヌル終了文字配列を持つのは簡単です。 – LeviX