迭代字符串数组,最后为零

时间:2013-06-14 05:30:50

标签: c arrays string pointers char

我有一个char *数组,如下所示:

{"12", "34", "", 0}

我将它传递给一个函数,所以它衰减到一个指针。所以我有一个函数,它接收一个char **,并且在函数中我想迭代遍历数组,直到我找到零,此时我想停止。我也想知道数组中有多少个字符串。解决这个问题的最佳方式是什么?

2 个答案:

答案 0 :(得分:4)

也许这样的事情会有所帮助:

#include <stdio.h>

void foo(char** input) /* define the function */
{
    int count = 0;
    char** temp  = input; /* assign a pointer temp that we will use for the iteration */

    while(*temp != NULL)     /* while the value contained in the first level of temp is not NULL */
    {
        printf("%s\n", *temp++); /* print the value and increment the pointer to the next cell */
        count++;
    }
    printf("Count is %d\n", count);
}


int main()
{
    char* cont[] = {"12", "34", "", 0}; /* one way to declare your container */

    foo(cont);

    return 0;
}

在我的情况下,它打印:

$ ./a.out 
12
34

$

答案 1 :(得分:2)

继续迭代直到你点击NULL,保持计数。