一种将2维数组复制到结构数组中的方法

时间:2013-02-22 18:07:56

标签: c arrays struct

我在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;

然而它不起作用, 有谁能帮助我?

2 个答案:

答案 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;