2015-03-08 18 views
0

我想以相反的方式填充一個二維數組,但我總是得到相同的錯誤:核心轉儲。如何以相反的方式填充一個二維數組 - C

當我說我的意思是相反的方式,通常我們這樣做

for(int i=0; i<MaxColumns; i++) 
    for(int b=0; i<MaxRows; b++) 
     array[i][b] = random value; 

我想要做的是爲每一行,我想填充每列單行,然後傳遞給下一行,並執行相同的操作。此時我爲每列動態聲明一個新行。

這就是我努力:

int i = atoi(argv[1]); 
int **array = (int**)malloc(i * sizeof(int*)); 
for (lines =0; lines <MAXLINES; lines ++) { 
    for (colunms =0; colunms <i; colunms ++) { 
     array[colunms] = (int*)malloc(1 * sizeof(int)); 
     v=colunms+lines; 
     array[colunms][lines]=v; 
    } 
} 

和錯誤接着說:

array[colunms][lines]=v; 

------最後一次更新問題----

已更新,雖然我試過這個代碼

for (lines =0; lines <MAXLINES; lines ++) { 
    array[colunms] = (int*)malloc(colunms * sizeof(int)); 
    for (colunms =0; colunms <i; colunms ++) { 
     v=colunms+lines; 
     array[colunms][lines]=v; 
    } 
} 

我一直在覈心轉儲:

array[colunms][lines]=v; 
+0

那麼,你在哪裏聲明變量'v'?這個變量的類型是什麼,你得到了什麼樣的錯誤(即它是編譯時錯誤還是運行時錯誤)? – 2015-03-08 21:29:11

+0

未複製到示例中,但其聲明爲int。抱歉。 – user3743144 2015-03-08 21:30:23

+0

「錯誤在繼續......」這是你描述這個錯誤的最好辦法嗎? – 2015-03-08 21:31:30

回答

1

這就夠簡單了。相反的:

for(int i=0; i<MaxColumns; i++) 
    for(int b=0; i<MaxRows; b++) 
     array[i][b]=random value; 

用途:

for(int b=0; i<MaxRows; b++) 
    for(int i=0; i<MaxColumns; i++) 
     array[i][b]=random value; 

你的錯誤,雖然是:

array[colunms] = (int*)malloc(1 * sizeof(int)); 

您正在爲int1要素分配的空間,您應該分配的colunms * sizeof(int)。你也應該做的是,內環以外,像這樣:

int **array = (int**)malloc(MAXLINES * sizeof(int*)); 
for (lines =0; lines <MAXLINES; lines ++) { 
    array[lines] = (int*)malloc(i * sizeof(int)); 
    for (colunms =0; colunms <i; colunms ++) { 
     v=colunms+lines; 
     array[lines][colunms] = v; 
    } 
} 

而且,即使這個代碼應工作,它可以在未來的一個問題,假設這是array[colunms][lines]它應該是array[lines][colunms]

爲什麼?因爲array[lines][colunms]每個array[line]代表一個完整的行及其所有列,這在大多數情況下更實用。

在這種形式中,您將能夠聲明函數來處理單個記錄,而不是將它交給整個「表」。

+0

嘿,問題是,我不能簡單做到這一點,當我需要「malloc」的列和行..他給核心傾銷,因爲即時通訊可能試圖訪問空間,我沒有要求它..和它的奇怪。 – user3743144 2015-03-08 21:20:42

+0

@ user3743144我已經更新了我的答案和相關細節。 – Havenard 2015-03-08 21:23:09

+0

嘿,再次,該解決方案已經嘗試,他不斷得到核心傾倒,就像我說的問題是,當我嘗試把值放在數組中,似乎爆炸,即時通訊在Linux上運行,雖然 – user3743144 2015-03-08 21:28:10