我想使用以下代码,但不使用“[][]”索引数组并用指针替换它
for (int i = 0; i < argc; i++) {
for (int j = 0; argv[i][j] != '\0'; j++) {
//code
}
}
我知道您可以使用指针来遍历数组,但我不确定如何使用第二个数组中未定义的长度(在本例中为输入的字符串)来执行此操作。由于 argv[] 的每个元素可以具有不同的长度,因此我想确保我可以正确读取字符并知道 argv[] 的每个元素何时结束以及下一个元素何时开始。
我希望它是这样的:(如果以下 main 标头是错误的,请告诉我。)
int main(int argc, char **argv) {
for (int i = 0; i < argc; i++) {
while(argv != '\0') {
//code
*argv+1;
}
//to skip null character
argv+1;
}
}
鉴于最后一个元素argv
is NULL
,您不需要对其进行索引或与任何内容进行比较argc
如果你真的不想。
int main(int argc, char *argv[]) {
for (char **arg = argv; *arg; ++arg) { // for each arg
for (char *p = *arg; *p; ++p) { // for each character
process(*p);
}
}
}
*arg
将NULL
位于参数列表的末尾,这是错误的。*p
将'\0'
在每个字符串的末尾,这是错误的。
从 N1256 5.1.2.2.1/2
如果声明了它们,则主函数的参数应遵守以下约束:
— argc 的值应为非负数。
— argv[argc] 应为空指针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)