所以我想知道如果命令行参数总是空终止?谷歌似乎说是,并且在海湾合作委员会编译表明情况是这样,但我可以保证这永远是真实的吗?主空null中的char * argv []参数是否终止?
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