返回字符串数组

时间:2010-07-12 02:28:40

标签: c string pointers

我一直试图让这个工作好几个小时,但我似乎无法理解它。

我正在尝试编写一个能够返回字符串数组的函数。

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

/**
 * This is just a test, error checking ommited
 */

int FillArray( char *** Data );

int main()
{
    char ** Data; //will hold the array

    //build array
    FillArray( &Data );

    //output to test if it worked
    printf( "%s\n", Data[0] );
    printf( "%s\n", Data[1] );

    return EXIT_SUCCESS;
}


int FillArray( char *** Data )
{
    //allocate enough for 2 indices
    *Data = malloc( sizeof(char*) * 2 );

    //strings that will be stored
    char * Hello =  "hello\0";
    char * Goodbye = "goodbye\0";

    //fill the array
    Data[0] = &Hello;
    Data[1] = &Goodbye;

    return EXIT_SUCCESS;
}

我可能会在某处混淆指针,因为我得到以下输出:

您好
分段错误

1 个答案:

答案 0 :(得分:10)

是的,你的指针间接混淆了,数据数组的成员应该像这样设置:

(*Data)[0] = Hello;
(*Data)[1] = Goodbye;

在函数中,Data 指向到数组,它本身不是数组。

另一个注意事项:您不需要在字符串文字中放置显式\0个字符,它们会自动以空值终止。