将字符串数组分配给char **

时间:2015-01-02 15:00:53

标签: c arrays pointers

我只是不能将字符串数组分配给我的char **指针。

我的字符串在char *tempArr[12];

但我不知道如何将它们分配给我的char ** arr变量。

首先,我使用:arr = (char**)malloc(numberOfElements * sizeof(char*));

分配内存

然后我尝试为每个元素分配内存:

arr[i] = malloc(256 * sizeof(char));

我也试图为char指针分配内存,但两者都不起作用。我的arr变量的结果是2到3个无意义的字符。

可能有什么不对?我尝试了我能找到的所有内容,结果是崩溃或无意义的内容。

编辑:对不起,我会尝试更多地澄清一下。背景是,我正在将数据从文件加载到结构中。每个结构都有char**变量,假设它包含字符串数组。

在我的阅读代码中,我正在使用我的临时数组char* tempArr[12]并成功地将字符串加载到其中。然后我将它传递给我正在创建我的结构的函数。

问题从这里开始,我试图"转换"我传递的数组,因此它可以存储在char** arr变量中。

2 个答案:

答案 0 :(得分:2)

char *tempArr[12];

是指针数组。所以如果你有像

这样的东西
tempArr[0] = malloc(20);
strcpy(tempArr[0],"hello");

然后在你正在做的事情之后你可以做。在为指针arr[i]

分配内存之后
char **arr = malloc(numberOfElements * sizeof(char*));

arr[i] = malloc(256);

strcpy(arr[i],tempArr[0]);

您可以在循环中运行上述步骤来复制所有指针的值

答案 1 :(得分:2)

我认为你的意思是以下

#include <string.h>

//...

size_t i;

char **arr = ( char** )malloc( numberOfElements * sizeof( char* ) );
for ( i = 0; i < numberOfElements; i++ ) arr[i] = malloc( 256 * sizeof( char ) );

for ( i = 0; i < sizeof( tempArr ) / sizeof( *tempArr ); i++ ) strcpy( arr[i], tempArr[i] );