2013-04-10 27 views
0

我做了一个结构有三个字符初始化字符:现在如何在结构

然后

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

编译器不显示错误,但是当我运行它有段错误,在“表[i] [j] .inside = '';”线路,我不知道我做错了什么。 我希望你明白我的意思,如果有人能帮上忙,那就太棒了!

+2

使用调试器。当你这样做的时候回来。 – 2013-04-10 23:16:23

+1

你是通过'table'传递什么东西的?它是如何创建的? – 2013-04-10 23:17:09

+0

更可能的表被错误地分配。你有这个代码吗? – 2013-04-10 23:17:15

回答

2

的问题是在这些行:

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

在阵列长度x,指数从去到0x-1,所以它应该是

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

,使我们不访问不存在的索引x,同样对于内环:

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

非常感谢 – 2013-04-10 23:42:04

2

如果IS的大小XY你应该只迭代,直到X-1 Y-1即

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

非常感谢你 – 2013-04-10 23:41:00

+0

没问题,欢迎你。 – 2013-04-10 23:41:51