2013-02-22 3 views
0

나는이 내 maze.c 파일의 문자로 가득이 배열 :구조체 배열로 2 차원 배열을 복사하는 방법

문자 normalMazeArray [6] [12] 동적

지금 내 구조체에있는 mazeArray (maze.h)에 배열

내 구조체가 소위 통과 할 mazeArray [행] [열]로 작성 :

typedef struct { 
    char mazeArray; 
} maze_t; 

maze_t* maze; 

char normalMazeArray[6][12]; // filled with info 

typedef struct { 
    char mazeArray; 
} maze_t; 

maze->mazeArray = normalMazeArray; 

그러나 그것은 작동하지 않습니다, 사람이 누가 나를 도울 수 :

나는 다음과 같이 복사를 시도?

+0

"mazeArray"유형은 무엇입니까? 무엇을 성취하려고합니까? –

+0

mazeArray는 char 유형이며 편집했습니다. mazeArray가 'char **' "유형 인 반면 normalMazeArray의 내용을 maze.mazeArray – user1213904

답변

1

당신이하려는 일은 정확하게 가능하지 않습니다. 두 가지의 약간 다른 솔루션을 사용할 수 있습니다.

normalMazeArraychar [6][12]입니다. 배열입니다.

typedef struct { 
    char mazeArray[6][12]; 
} maze_t; 

memcpy(maze->mazeArray, normalMazeArray, sizeof(normalMazeArray)); 

을하거나 normalMazeArray 프로그램의 수명 전반에 걸쳐 지속되는 경우, 당신은 구조에 대한 포인터를 할당 할 수 있습니다 : 당신은 memcpy()를 사용하여 배열의 동일한 유형의 내용을 복사 할 수 있습니다

typedef struct { 
    char (*mazeArray)[12]; 
} maze_t; 

maze->mazeArray = normalMazeArray; 
+0

감사합니다. – user1213904

-1

잠깐, 어떻게?

우선 maze이 포인터이므로 maze.mazeArray을 가질 수 없습니다. 둘째로 maze->mazeArray은 char 유형이고 mazeArray 유형은 char**입니다. 안돼.

char** 배열을 할당 한 다음 strdups 문자열을 mazeArray에서 작성해야합니다. 또는 복사가 아닌 소유권 이전을 원하는 경우 다음과 같이 구성 할 수 있습니다.

typedef struct { 
    char** mazeArray; 
} maze_t; 
maze_t maze; 
maze.mazeArray = mazeArray; 
+0

"으로 전송하려고합니다. 아니요, 아닙니다. 그것은'char [6] [12] '타입입니다. –

관련 문제