如果我有char **args
,我如何循环遍历数组的行以确定有多少?
例如,如果char **args == {"one", "two", "three"}
,我如何遍历每个元素,保持计数,然后返回3?
答案 0 :(得分:0)
由于args
以空值终止,只需编写
int i;
for (i = 0; args[i]; i++)
// do something
答案 1 :(得分:-1)
您可以在编译时获得大小,如下所示。
这是迭代字符串数组的一种方法。
char* args[] = {"one", "two", "three"};
char** p = args;
size_t len = sizeof(args) / sizeof(*args);
for (int i = 0; i < len; ++i) {
printf("item %u = %s\n", i, *p++);
}
[编辑]
我误解了,看来你的意思是命令行上的args(以null结尾);
在这种情况下,你可以使用:
int main(int argc, char** argv) {
char** p = argv;
int count = 0;
while (*p)
printf("item %u = %s\n", count++, *p++);
}
甚至
int main(int argc, char** argv) {
int count = 0;
while (*argv)
printf("item %u = %s\n", count++, *argv++);
}
注意在上面的例子中你将打印argv [0]。适应您的需求。
当然在这种情况下你也有argc所以你可以迭代直到我&lt; ARGC。你的问题不明确。您应该在问题中提供完整的可构建代码。
答案 2 :(得分:-2)
请尝试以下代码:
ng-options
while循环应该在到达字符串数组的末尾时终止,但是最好有:
int count=0;
while(*args++)count++;
printf(" %d\n",count);