2017-03-16 117 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