2016-11-25 4 views
1
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이 잘못 되었기 때문에 코드가 올바르지 않습니다. 이유를 모르겠습니다. 제발 도와 주실 수 있습니까?새로운 문자 **로 전역 문자 **를 복사하십시오. **

+1

'의 strcpy (equipo [I], 셀렉션 [I]) '->'equipo [I] = 셀렉션 [I]'또는'equipo [I] =에서는 StrDup (셀렉션 [I]); ' – BLUEPIXY

+1

문자열에 대한 포인터에만 메모리를 할당했기 때문에 문자열에 대해서는 할당하지 않았습니다. – freestyle

답변

0

복사 방법에 따라 다릅니다. 새 배열의 배열 seleccion의 요소를 복사 할 경우 다음

를 작성해야 문자열의 사본이 배열 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; 
} 
+0

고마워. 두 번째가 필요해. –