如何初始化结构中的char

时间:2013-04-10 23:15:31

标签: c

我用三个char创建了一个结构:

typedef struct{
  char inside;
  char condition;
  char whattoprint;      
} array;        

然后我制作一个2d(数组类型)表并将它malloc并且现在好了

然后我想调用一个函数,我想要初始化我的表,就像这样:

array **initialize_table(int x,int y,array **table){
    int i,j;
    for(i=0;i<=x;i++){
       for(j=0;j<=y;j++){
          table[i][j].inside='.';
       }
    }
    return table;
}

编译器没有显示错误,但是当我运行它时,“table [i] [j] .inside ='。';”中存在分段错误。我不知道我做错了什么。 我希望你理解我的意思,如果有人可以提供帮助,那就太棒了!

2 个答案:

答案 0 :(得分:2)

如果x的大小是x y,你应该只迭代x-1 y-1,即

int i,j;
for(i=0; i < x; i++){
   for(j=0; j < y; j++){
      table[i][j].inside='.';
   }
}

答案 1 :(得分:2)

问题在于以下几点:

for(i=0;i<=x;i++){
    for(j=0;j<=y;j++){

在长度为x的数组中,索引从0变为x-1,因此它应该是

for(i=0;i<x;i++){

这样我们就不会访问不存在的索引x,对于内部循环也是如此:

for(j=0;j<y;j++){