如何打印char * a []的所有返回值?

时间:2014-02-19 05:32:40

标签: c arrays string pointers

我有一个像char ** f()这样的功能。它返回变量char* a[]的地址。我将此返回类型存储在变量char ** s中,但我想打印char * a[]的所有值。这怎么可能?

感谢名单。

2 个答案:

答案 0 :(得分:1)

请记住,你正在处理一系列指针。

假设(这通常是不安全的假设)你的指针列表以null结尾,就像字符串以null结尾一样,你可以使用一个简单的for循环来访问数组中的char *类似于以下内容:

for (int index = 0; index++ ; a[index] != null) {
    char * myString = a[index];
    printf("Value: %s\n",myString);
}

其他海报是对的,你需要知道你正在处理多少个字符,到目前为止,这些信息并不明显。上述答案对您正在处理的数据结构做出了巨大的假设,如果该假设不正确,将会对您的应用程序进行分段。

答案 1 :(得分:0)

样品

#include <stdio.h>
#include <stdlib.h>

char **f(void){
    char **array = malloc(sizeof(char*)*6);
    array[0] = "fox";
    array[1] = "jumps";
    array[2] = "over";
    array[3] = "lazy";
    array[4] = "dog";
    array[5] = NULL;
    return array;
}

int main() {
    char ** s = f();
    for(int i=0;s[i];++i)
        printf("%s\n", s[i]);
    free(s);
    return 0;
}