2017-03-16 118 views
1

我想初始化一個C數組的二維數組,用C填充,除了索引(2,2)將填充字母'C'。然而,當我運行下面的代碼時,不僅在(2,2)處得到'C',而且由於某種原因,我最終也得到了索引(1,9)處的'C'(見下面的輸出)。二維數組不打印正確的輸出

我試着改變寬度和高度值,並意識到它有時會起作用。例如,當我使height = 10和width = 10時,我得到正確的輸出,只有一個'C'在其正確的插槽中。

我對C編程頗爲陌生,不知道爲什麼它有時會產生正確的輸出。任何幫助將非常感激!

int width = 10; 
int height = 7; 
int x = 2; 
int y =2; 
int limit = 3; 

//initialising 2D array 
char board[width][height]; 
for(int i = 0; i < height; i++){//rows 
    for (int j = 0; j < width; j++){//cols 
     if(i == y && j == x){ 
      board[y][x] = 'C'; 
     } 
     else{ 
      board[i][j] = 'X'; 
     } 
    } 
} 
//printing 2D array 
for(int i = 0; i < height; i++){//rows 
    for (int j = 0; j < width; j++){//cols 
     printf("%c ", board[i][j]); 
    } 
    printf("\n"); 
} 

Sample output

+1

因爲它是char'的'一個數組,你可能也只是做:'memset的(板, 'X',寬*高); board [y] [x] ='C';' – Dmitri

+1

你只想在'C'的幾個位置上,而其餘的是'X'?如果是這樣,_memset()_可能會更好。使用它將所有值設置爲'X',然後使用條件將數組中的特定值設置爲其他值。 – Ravin

+0

將來,總是複製粘貼輸出_as text_。不要使用圖片來顯示文字。 –

回答

2

你得到了數組聲明是錯誤的。 而不是

char board[width][height]; 

你需要

char board[height][width]; 
/*   Rows Cols */ 
+0

啊歡呼隊友。我知道我忽略了一些簡單的東西。謝謝 :) – Anonymous