0

この配列は、maze.cファイルの文字でいっぱいになっています。

char normalMazeArray [6] [12]; mazeArray[row][column]として動的に入力されます

次に、構造体(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;

しかし、それは機能していません、私を助けることができる人は誰ですか?

4

2 に答える 2

1

あなたがやろうとしていることは、正確には不可能です。ただし、使用できるわずかに異なる2つのソリューションがあります。

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;
于 2013-02-22T18:22:59.467 に答える
-1

待って、どうやって?

まず第一に、mazeはポインタなので、を持つことはできませんmaze.mazeArray。第二に、maze->mazeArrayはchar型であり、mazeArrayは。型char**です。できません。

配列を割り当てる関数を記述してchar**から、から文字列をstrdupsする必要がありますmazeArray。または、コピーだけでなく所有権の譲渡が必要な場合は、次のようになります。

typedef struct {
   char** mazeArray;
} maze_t;
maze_t maze;
maze.mazeArray = mazeArray;
于 2013-02-22T18:15:07.400 に答える