C 将二维数组复制到结构数组中的一种方法
我在maze.c文件中用字符填充了这个数组: char normalmazarray[6][12];动态填充为Mazarray[行][列] 现在我想将数组中的内容传递给位于我的结构(maze.h)中的mazarray 我的结构称为:C 将二维数组复制到结构数组中的一种方法,c,arrays,struct,C,Arrays,Struct,我在maze.c文件中用字符填充了这个数组: char normalmazarray[6][12];动态填充为Mazarray[行][列] 现在我想将数组中的内容传递给位于我的结构(maze.h)中的mazarray 我的结构称为: typedef struct { char mazeArray; } maze_t; 我试着复制它如下: maze_t* maze; char normalMazeArray[6][12]; // filled with info typedef st
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;
但它不起作用,,
有人能帮我吗?等等,怎么办
首先,maze
是一个指针,所以不能使用maze.mazarray
。其次,maze->mazarray
是char类型,而mazarray
是char**
类型。不行
您应该编写一个函数来分配char**
数组,然后从mazarray
中提取字符串。或者,如果您想要所有权转让,而不仅仅是复制,您可以这样做:
typedef struct {
char** mazeArray;
} maze_t;
maze_t maze;
maze.mazeArray = mazeArray;
你想做的事情并不完全可能。不过,您可以使用两种稍有不同的解决方案
normalmazarray
属于char[6][12]
类型-它是一个数组。您可以使用memcpy()
将其内容复制到相同类型的数组中:
或者,如果您的normalmazarray
在程序的整个生命周期内持续存在,您可以在结构中为其分配一个指针:
typedef struct {
char (*mazeArray)[12];
} maze_t;
maze->mazeArray = normalMazeArray;
“Mazarray”属于哪种类型?你想达到什么目的?Mazarray是char类型的,我已经编辑过了。我想将NormalMazarray的内容传输到maze.mazarray“而Mazarray的类型为
char**
”-不,不是。它的类型是char[6][12]
。
typedef struct {
char (*mazeArray)[12];
} maze_t;
maze->mazeArray = normalMazeArray;