2013-04-10 31 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