将全局 char** 复制到新的 char**

标签 c arrays string malloc strcpy

char * seleccion[5]={"  ","  ","  ","  "," "};

char **armar_Equipazo() {
  char** equipo= (char **)malloc(sizeof(seleccion));
  for(int i =0 ; i<5 ; i++)
      strcpy(equipo[i],seleccion[i]);
  return equipo;
}

我需要在一个新的“数组”中复制一个 char **,但是我的代码没有成功,因为我的 malloc 是错误的,我不知道为什么。 你能帮我吗 ?

最佳答案

这取决于你要如何复制。如果你想复制的元素 array seleccion 在一个新数组中然后你可以写

char * seleccion[5] = { "  ", "  ", "  ", "  ", " " };

char ** armar_Equipazo() 
{
    char **equipo = ( char **)malloc( sizeof( seleccion ) );

    memcpy( equipo, seleccion, sizeof( seleccion ) );

    return equipo;
}

如果你想复制数组seleccion元素指向的字符串,那么你应该这样写

char * seleccion[5] = { "  ", "  ", "  ", "  ", " " };

char ** armar_Equipazo() 
{
    char **equipo = ( char **)malloc( sizeof( seleccion ) );

    for( size_t i = 0; i < sizeof( seleccion  / sizeof( *seleccion ); i++ )
    {
        equipo[i]  = malloc( strlen( seleccion[i] ) + 1 );
        strcpy( equipo[i], seleccion[i] );
    }

    return equipo;
}

关于将全局 char** 复制到新的 char**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40796585/

相关文章:

c - 包含字符串和整数的打印文件,C 程序

c - 我在哪里放置 perror ("wait") 和 fork 代码

c - void ** 是什么意思

c - C 中的意外行为

C 洗牌二维数组

javascript - 我对这个数组做错了什么?

c# 在对象数组中搜索特定的 int 值,然后返回该对象的所有数据

javascript - 将大数组排序为更简单的数组

javascript - 在javascript中将数组中的单个字符与字符串连接起来?

javascript - 字符串替换js/GAS中的正则表达式无效量词