首页 文章

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

提问于
浏览
1

我只是不能将字符串数组分配给我的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] 并成功地将字符串加载到其中 . 然后我将它传递给我正在创建我的结构的函数 .

问题从这里开始,我试图"convert"我传递的数组,所以它可以存储在 char** arr 变量中 .

2 回答

  • 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] );
    
  • 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]);
    

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

相关问题