将字符串数组分配给 char**
Assigning string array to char**
我无法将字符串数组分配给我的 char** 指针。
我的琴弦在 char *tempArr[12];
但我不知道如何将它们分配给我的 char** arr 变量。
首先,我使用以下方法分配内存:arr = (char**)malloc(numberOfElements * sizeof(char*));
然后我尝试给每个元素分配内存:
arr[i] = malloc(256 * sizeof(char));
我也试过只为字符指针分配内存,但都不起作用。我的 arr 变量中的结果是 2 到 3 个无意义的字符。
有什么问题吗?我尝试了所有我能找到的东西,结果要么是崩溃,要么是无意义的内容。
编辑:抱歉,我会尽力澄清一下。背景是,我正在将文件中的数据加载到结构中。每个结构都有 char**
假设保存字符串数组的变量。
在我的阅读代码中,我使用了我的临时数组 char* tempArr[12]
并成功地将字符串加载到其中。然后我将它传递给创建我的结构的函数。
问题从这里开始,我试图 "convert" 我传递的数组,以便它可以存储在 char** arr
变量中。
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]);
您可以运行循环执行上述步骤来复制所有指针的值
我认为你的意思如下
#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] );
我无法将字符串数组分配给我的 char** 指针。
我的琴弦在 char *tempArr[12];
但我不知道如何将它们分配给我的 char** arr 变量。
首先,我使用以下方法分配内存:arr = (char**)malloc(numberOfElements * sizeof(char*));
然后我尝试给每个元素分配内存:
arr[i] = malloc(256 * sizeof(char));
我也试过只为字符指针分配内存,但都不起作用。我的 arr 变量中的结果是 2 到 3 个无意义的字符。
有什么问题吗?我尝试了所有我能找到的东西,结果要么是崩溃,要么是无意义的内容。
编辑:抱歉,我会尽力澄清一下。背景是,我正在将文件中的数据加载到结构中。每个结构都有 char**
假设保存字符串数组的变量。
在我的阅读代码中,我使用了我的临时数组 char* tempArr[12]
并成功地将字符串加载到其中。然后我将它传递给创建我的结构的函数。
问题从这里开始,我试图 "convert" 我传递的数组,以便它可以存储在 char** arr
变量中。
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]);
您可以运行循环执行上述步骤来复制所有指针的值
我认为你的意思如下
#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] );