0

私は現在、学校の課題に取り組んでおり、現在行き詰まっています。私が達成しようとしていることは、私の意見ではかなり単純です。構造を定義しました。この構造では、マトリックスを作成しました。次にやりたいことは、構造体へのポインターのみを使用して、このマトリックスに情報を追加することです。

だからここに私の構造があります:

typedef struct maze{
    char mazeMatrix[6][10];
};

そしてその構造への私のポインタ:

typedef struct maze* mazePointer;

次に、これを別の関数内で初期化します。多くの Web サイトで必要な構文を探していましたが、必要な構文が見つかりません。mazeMatrix[0][0]マトリックスの内容を変更するにはどうすればよいですか。たとえば、最初のエントリ (最初の行、最初の列)を "H" で変更したいとします。これを達成するための構文は何ですか?

また、構造を更新する必要がある関数へのポインターも提供しています。

4

1 に答える 1

1

与えられた:

mazePointer mp = ...;

mp->mazeMatrix[0][0] = 'H';

個人的には、typedefでポインターを非表示にしたくないので、次を使用します。

typedef struct Maze { char mazeMatrix[6][10]; } Maze;

Maze *mp = ...;
mp->mazeMatrix[0][0] = 'H';

エンドラインは同じです。typedef struct maze { ...};タイプの名前は定義されていないことに注意してください。キーワードtypedefは不要であり、削除する必要があります(そして、優れたコンパイラーはそれについて警告します)。私はおそらく、 ;matrixではなく単に単語を使用するでしょう。mazeMatrix構造が迷路であり、その中のマトリックスが迷路のマトリックスであり、接頭辞は必要ありません。


呼び出しコンテキスト:

Maze m;

maze_modifier(&m);

呼び出されたコンテキスト:

void maze_modifier(Maze *mp)
{
    mp->mazeMatrix[0][0] = 'H';
    ...
}

次の問題は、この行列をポインターから出力することです。使ってます:

printf("%c", mazePointer->matrix[counter][counterA]);

カウンターは、ネストされた2つのforループからの2つの変数です。助言がありますか?

それはうまくいくはずです。だからこれが必要です:

void maze_printer(Maze *mp)
{
    for (int i = 0; i < 6; i++)
    {
        for (int j = 0; j < 10; j++)
            putchar(mp->mazeMatrix[i][j]);
        putchar('\n');
    }
}
于 2013-02-22T16:37:03.577 に答える