2D数组无法打印正确的输出

时间:2017-03-16 03:22:50

标签: c arrays matrix multidimensional-array

我正在尝试在填充了X的C中初始化一个2D数组,除了索引(2,2),它将填充字母' C'。但是,当我运行下面的代码时,我不仅得到了一个' C'在(2,2),但由于某种原因,我最终得到了一个' C'在指数(1,9)(见下面的输出)。

我尝试更改宽度和高度值,并意识到它有时会起作用。例如,当我使高度= 10和宽度= 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 个答案:

答案 0 :(得分:2)

你的数组声明错误了。 而不是

char board[width][height];

你需要

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