我的int变量的值在函数执行后任意改变

时间:2017-03-09 16:41:52

标签: c

我目前处于其中一个编码任务的中间,我们为逆转游戏(奥赛罗)创建了一个游戏板,给它一些初始条件,并检查移动的合法性。

代码首先向用户询问电路板的尺寸(边长),并使用一个功能初始化电路板,另一个用于打印电路板。

我的代码适用于boardDim = 4和boardDim = 6,但是当我输入8时,在负责初始化电路板的函数执行其所有语句之后,boardDim的值跳转到类似21568的值并导致分段错误注意:实验室讲义说我们可以假设板的边长不会超过26 谢谢你的阅读!

这是我的代码:

void InitBoard(char reversiBoard[][26], const int a) {

    for (int i = 0; i < a; i++) {

        for (int j = 0; j < a; j++) {

            if ((i == (a / 2 - 1)) && (j == (a / 2 - 1))) {
                reversiBoard[i][j] = 'W';
            }
            else if ((i == (a / 2 - 1)) && (j == a / 2)) {
                reversiBoard[i][j] = 'B';
            }
            else if ((i == a / 2) && (j == (a / 2 - 1))) {
                reversiBoard[i][j] = 'B';
            }
            else if ((i == a / 2) && (j == a / 2)) {
                reversiBoard[i][j] = 'W';
            }
            else {
                reversiBoard[i][j] = 'U';
            }
        }
    }
    return;
}

void printBoardCurr(char reversiBoard[][26], const int a) {

    char alphabet[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };

    printf("  ");

    for (int i = 0; i < a; i++) {
        printf("%c", (alphabet[i]));
    }
    printf("\n\n");

    for (int j = 0; j < a; j++) {
        printf("%c ", (alphabet[j]));

        for (int k = 0; k < a; k++) {
            printf("%c", reversiBoard[j][k]);
        }
        printf("\n");
    }
    return;
}

int main(void) {

    int boardDim = 0;
    printf("Enter the board dimension: ");
    scanf(" %d", &boardDim);

    char reversiBoard[boardDim][boardDim];
    InitBoard(reversiBoard, boardDim);
    printBoardCurr(reversiBoard, boardDim);

    return 0;
}

0 个答案:

没有答案