2013-02-22 86 views
0

我目前正在为学校进行一项任务,目前我被卡住了。在我看来,我试图达到的目标非常简单。我定义了一个结构。在这个结构中,我制作了一个矩阵。我想要做的下一件事是通过仅使用指向该结构的指针向此矩阵添加信息。更改结构中矩阵的内容C

因此,这里是我的结构:

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

和我的指针,该结构:

typedef struct maze* mazePointer; 

我那么另一个函数内初始化此。我一直在众多网站上查找所需的语法,但无法找到所需的语法。我如何改变矩阵的内容,例如我想用“H”来改变第一个条目(第一行,第一列)mazeMatrix[0][0]。什么是实现这一目标的语法?

我也给指针指向需要更新结构的函数。

+2

你真的应该显示你已经尝试过的内容以及编译器报告的错误。如你所想,这是非常简单的(至少,一旦你做了几次)。但是,你的编译器警告会帮助...或者,如果编译代码,可能麻烦的是你通过价值传递结构,而不是通过引用,所以函数修改迷宫的副本而不是迷宫本身。我们无法分辨,因为您没有向我们展示SSCCE([简短,独立,正确的示例](http://sscce.org/))。 – 2013-02-22 16:46:59

回答

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个变量来自2个嵌套for循环。有什么建议么?

这应该工作。所以应该这样:

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'); 
    } 
}