迭代指针指针

时间:2016-03-27 21:36:48

标签: c loops pointers multidimensional-array

如果我有char **args,我如何循环遍历数组的以确定有多少?

例如,如果char **args == {"one", "two", "three"},我如何遍历每个元素,保持计数,然后返回3?

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);
相关问题