如何避免这几个缓存溢出警告

#include <stdio.h>
#include <stdbool.h>
char qipan[3][3] = {
{' ',' ',' '},
{' ',' ',' '},
{' ',' ',' '}
};
int GameOver = 0;
int main(void) {
    int x, y, Player;
    Player = 1; x = y = 0;
    void win(); void qipan_visual();


    for (; GameOver == 0;) {
        printf("当前是玩家%d执子\n请输入要下的的棋子的坐标例如(1 1)不包括括号\n(第几行 第几个):", Player);
        scanf_s("%d %d", &x, &y);
        if (x > 3 || x < 0 || y>3 || y < 0) {
            printf("输入格式错误或超出棋盘!\n请重新输入!");
            scanf_s("%d %d", &x, &y);
        }
        else while (qipan[x - 1][y - 1] == 79 || qipan[x - 1][y - 1] == 88 ) {        //此处出现读取的数据无效,可读为3,可能读取-1
            printf("此位置已有棋子!请重新输入!");
            scanf_s("%d %d", &x, &y);
        }
        //Player = 1 ? qipan[x - 1][y - 1] = '*',Player = 1 : qipan[x - 1][y - 1] = 'x', Player = 2;
        if (Player == 1) {

            qipan[x - 1][y - 1] = 'O';          //此处出现可写为3,可能写-1
            Player = 2;
        }
        else {
            qipan[x - 1][y - 1] = 'X';         //此处出现可写为3,可能写-1
            Player = 1;
        }
        qipan_visual();
        win();
    }

    printf("    GameOver!     \n胜利者是Player%d", Player == 1 ? Player = 2 : Player = 1);
}
void win() {
    int x, y;
    x = y = 0;
    for (; x < 3 && y < 3; x++, y++) {
        //横向判断
        if (qipan[x][0] == qipan[x][1] && qipan[x][1] == qipan[x][2]) {
            qipan[x][0] == ' ' && qipan[x][1] == ' ' ? GameOver = 0 : GameOver = 1;
            break;
        }
        //纵向判断
        if (qipan[0][y] == qipan[1][y] && qipan[1][y] == qipan[2][y]) {
            qipan[0][y] == ' ' && qipan[1][y] == ' ' ? GameOver = 0 : GameOver = 1;
            break;
        }
        //斜向判断
        if (qipan[0][0] == qipan[1][1] && qipan[1][1] == qipan[2][2] || qipan[0][2] == qipan[1][1] && qipan[1][1] == qipan[2][0]) {
            qipan[0][0] == ' ' && qipan[1][1] == ' ' || qipan[0][2] == ' ' && qipan[1][1] == ' ' ? GameOver = 0 : GameOver = 1;
            break;
        }
    }
}
void qipan_visual() {
    //棋盘可视化
    printf(" %c || %c || %c \n", qipan[0][0], qipan[0][1], qipan[0][2]);
    printf("-------------\n");
    printf(" %c || %c || %c \n", qipan[1][0], qipan[1][1], qipan[1][2]);
    printf("-------------\n");
    printf(" %c || %c || %c \n\n", qipan[2][0], qipan[2][1], qipan[2][2]);
}

https://blog.csdn.net/nomad2/article/details/1611832