C Программа не продолжает следовать коду в функции main () после вызова функции внутри нее - PullRequest
0 голосов
/ 24 апреля 2020

Не выполнит следующий код в функции main (). Любой вклад приветствуется. PS Я был на начальных этапах создания ti c -ta c -toe-game.

void printBoard(int slotNumber);

int main()
{
int slotNumberMain = -1;
printf("prints this\n");
printBoard(slotNumberMain);
printf("but not this\n");


return 0;
}

void printBoard(int slotNumber)
{

int boardSlots[3][3];
int i;
int j = 0;

for (i = 1; i <= 9; i++){
    char box[4] = {'[', ' ', ']', '\0'};
    boardSlots[j][i - 1] = i;

    if (slotNumber == i){
        char box[4] = {'[', 'X', ']', '\0'};
    }

    printf("%s", box);
    if (i % 3 == 0){
        j++;
        printf("\n");
        }
    }

}

Редактировать: Причина, по которой существует переменная slotNumber, заключается в том, что изначально я добавил enterNumber () (которая будет вызываться в конце printBoard () и если вы введете число и пометите поле знаком «x» после вызова printBoard (slotNumberMain)), однако я не добавил здесь код, потому что я понял, что проблема была строго в printBoard () и main.)

Edit 2: я решил проблему, это было из-за переполнения массива boardSlots, как кто-то предложил.

Спасибо всем, кто пытался помочь.

1 Ответ

0 голосов
/ 24 апреля 2020

Я решил проблему, это было из-за переполнения массива boardSlots, как кто-то предложил.

void printBoard(int slotNumber)
{

    int boardSlots[3][3];

    int i;
    int j = 1;
    char box[4] = {'[', ' ', ']', '\0'};

    for (i = 1; i <= 3 && j <= 3; i++){

        boardSlots[j - 1][i - 1] = i * j;

        if (slotNumber == i){
            char box[4] = {'[', 'X', ']', '\0'};
        }

        printf("%s", box);
        if (i == 3){
            j++;
            i = 0;
            printf("\n");
        }
    }

}
...