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;
}

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

最佳答案

这取决于你将如何复制。如果要复制
数组seleccion在新数组中,然后可以编写

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

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

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

    return equipo;
}

如果要复制数组元素指向的字符串,则应编写
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;
}

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

10-11 17:55