2013-02-22 78 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」是?你想達到什麼目的? – 2013-02-22 18:09:16

+0

mazeArray是char類型的,我已經編輯它。我想將normalMazeArray的內容傳遞給maze.mazeArray – user1213904 2013-02-22 18:11:45

回答

1

你想做什麼事情不完全是可能的。不過,您可以使用兩種略有不同的解決方案。

normalMazeArraychar [6][12] - 它是一個數組。您可以使用memcpy()其內容複製到同類型的數組:

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

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

,或者如果您normalMazeArray持續整個程序的生命週期,可以在結構的指針賦給它:

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

maze->mazeArray = normalMazeArray; 
+0

這工作謝謝你 – user1213904 2013-02-22 18:27:15

-1

等等,怎麼?首先,是一個指針,所以你不能有maze.mazeArray。其次,maze->mazeArray是char類型的,而mazeArray的類型是char**。沒有可以做的。

您應該編寫一個函數,它分配char**數組,然後從mazeArray中扣除字符串。或者,如果你想過戶,而不僅僅是複製,你可以去這樣的:

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

「而mazeArray的類型是char **'」 - 不,它不是。它的類型是char [6] [12]'。 – 2013-02-22 18:23:28