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

将字符串数组分配给char**,c,arrays,pointers,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变量

首先,我使用:
arr=(char**)malloc(numberOfElements*sizeof(char*))分配内存

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

arr[i] = malloc(256 * sizeof(char));
我还尝试只为char指针分配内存,但两者都不起作用。我的arr变量中的结果是2到3个无意义字符

有什么不对劲吗?我尝试了我能找到的一切,结果要么崩溃,要么胡说八道

编辑:对不起,我会尽量澄清。背景是,我正在将数据从文件加载到结构中。每个结构都有
char**
变量,假定该变量保存字符串数组

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

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

char *tempArr[12];
是指针数组。所以如果你有

tempArr[0] = malloc(20);
strcpy(tempArr[0],"hello");
然后在你做了什么之后你就可以做了。i、 e.在将内存分配给指针后,
arr[i]

char **arr = malloc(numberOfElements * sizeof(char*));

arr[i] = malloc(256);

strcpy(arr[i],tempArr[0]);
您可以在循环中运行上述步骤来复制所有指针的值

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

tempArr[0] = malloc(20);
strcpy(tempArr[0],"hello");
然后在你做了什么之后你就可以做了。i、 e.在将内存分配给指针后,
arr[i]

char **arr = malloc(numberOfElements * sizeof(char*));

arr[i] = malloc(256);

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

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

我认为您的意思是

#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] );
#包括
//...
尺寸i;
char**arr=(char**)malloc(numberOfElements*sizeof(char*);
对于(i=0;i
我想你的意思是

#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] );
#包括
//...
尺寸i;
char**arr=(char**)malloc(numberOfElements*sizeof(char*);
对于(i=0;i
不清楚您想要实现什么目标。这个问题中缺少太多东西,无法通过摇摆(胡乱猜测)提供准确答案。你的
arr=…
很有意义(如果你失去了演员阵容,情况会更糟,因为一些奇怪的原因,你在那里做得不正确,但是在你的
arr[i]=…
作业中做得正确)。如果这在某些函数范围内是完全独立的,那么它看起来是正确的。如果
char**arr
是一个函数输出参数,那么它是错误的。现在还不清楚你想达到什么目的。这个问题缺少太多东西,无法通过摇摆(疯狂的猜测)提供准确的答案。你的
arr=…
很有意义(如果你失去了演员阵容,情况会更糟,因为一些奇怪的原因,你在那里做得不正确,但是在你的
arr[i]=…
作业中做得正确)。如果这在某些函数范围内是完全独立的,那么它看起来是正确的。如果
char**arr
是一个函数输出参数,那么它是错误的。是的,就是这样。谢谢我的问题是在for循环中(我计算了元素的数量,并且没有将数组中的因子从零开始计算),所以当我尝试这个方法之前,我认为它不起作用,而事实上问题在别处:/Yeah,就是这样。谢谢我的问题是在for循环中(我计算了元素的数量,没有将数组中的因子从零开始计算),所以在我尝试此方法之前,我认为它不起作用,而事实上问题在别处:/