我在maze.c文件中填充了这个数组:
char normalMazeArray [6] [12];动态填充为mazeArray [row] [column]
现在我想将数组传递给位于我的struct(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 :(得分:1)
你想要做的事情并非完全可能。但是,您可以使用两种略有不同的解决方案。
normalMazeArray
的类型为char [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;
答案 1 :(得分:-1)
等等,怎么样?
首先,maze
是指针,因此您不能拥有maze.mazeArray
。其次,maze->mazeArray
的类型为char,而mazeArray
的类型为char**
。不行。
您应该编写一个分配char**
数组的函数,然后从mazeArray
中删除字符串。或者,如果您想要所有权转移,而不仅仅是复制,您可以这样:
typedef struct {
char** mazeArray;
} maze_t;
maze_t maze;
maze.mazeArray = mazeArray;