*insist 2021-08-16 22:03 采纳率: 0%
浏览 31

这是栈溢出吗? 怎么就溢出来 把行和列换成3以上的数才行 求指点 一个三子棋的代码 (还未写完)

game.h//这是头文件

#define ROW 3
#define COL 3
#include<stdio.h>
void display_board(char board[ROW][COL], int row, int col);
void initboard(char board[ROW][COL], int row, int col);

game.c //里面有定义
#include"game.h"
void initboard(char board[ROW][COL], int row, int col)
{
    int i = 0;
    int j = 0;
    for (i = 0; i < row; i++)
    {

        for (j = 0; j < col; j++)
        {

            board[row][col] = ' '
        }

    }

}
void displayed_board(char board[ROW][COL], int row, int col)
{
    int a = 0;
    int b = 0;
    for (a = 0; a < row; a++)
    {
        for (b = 0; b < col; b++)
        {
            printf("  %c ", board[a][b]);
            if (b < col - 1)
                printf("|");
        }
        printf("\n");

        if (a < row - 1)
        {
            for (b = 0; b < col; b++)
            {
                printf("---");
                if (b < col - 1)
                    printf("|");

            }
            printf("\n");
        }
    }

}
test.c //测试
#include"game.h"
//#include"game.c"
void menu()
{
    printf("***************************************\n");
    printf("*****      1.PLAY     0.EXIT       ****\n");
    printf("***************************************\n");
}
void game()
{
    char board[ROW][COL] = { 0 };
    initboard(board, ROW, COL);
    displayed_board(board, ROW, COL);



}


int main()
{
    menu();
    int input = 0;
    scanf_s("%d", &input);
    do
    {
        switch (input)
        {
        case 1:
            printf("三子棋=>\n");
            game();
            break;
        case 2:
            printf("输入错误!\n");
            break;
        default:
            break;
        }

    } while (0);



    return 0;
}
#include"game.h"
//#include"game.c"
void menu()
{
    printf("***************************************\n");
    printf("*****      1.PLAY     0.EXIT       ****\n");
    printf("***************************************\n");
}
void game()
{
    char board[ROW][COL] = { 0 };
    initboard(board, ROW, COL);
    displayed_board(board, ROW, COL);



}


int main()
{
    menu();
    int input = 0;
    scanf_s("%d", &input);
    do
    {
        switch (input)
        {
        case 1:
            printf("三子棋=>\n");
            game();
            break;
        case 2:
            printf("输入错误!\n");
            break;
        default:
            break;
        }

    } while (0);



    return 0;
}
#include"game.h"
//#include"game.c"
void menu()
{
    printf("***************************************\n");
    printf("*****      1.PLAY     0.EXIT       ****\n");
    printf("***************************************\n");
}
void game()
{****
    char board[ROW][COL] = { 0 };
    initboard(board, ROW, COL);
    displayed_board(board, ROW, COL);



}//这里显示错误   Run-Time Check Failure #2 - Stack around the variable 'board' was corrupted.


int main()
{
    menu();
    int input = 0;
    scanf_s("%d", &input);
    do
    {
        switch (input)
        {
        case 1:
            printf("三子棋=>\n");
            game();
            break;
        case 2:
            printf("输入错误!\n");
            break;
        default:
            break;
        }

    } while (0);



    return 0;
}

#include"game.h"

void menu()
{
    printf("***************************************\n");
    printf("*****      1.PLAY     0.EXIT       ****\n");
    printf("***************************************\n");
}
void game()
{
    char board[ROW][COL] = { 0 };
    initboard(board, ROW, COL);
    displayed_board(board, ROW, COL);



}


int main()
{
    menu();
    int input = 0;
    scanf_s("%d", &input);
    do
    {
        switch (input)
        {
        case 1:
            printf("三子棋=>\n");
            game();
            break;
        case 2:
            printf("输入错误!\n");
            break;
        default:
            break;
        }

    } while (0);



    return 0;
}



  • 写回答

1条回答 默认 最新

  • George_hacker 2021-08-16 22:57
    关注

    如果是3以下的数的话不数组不就越界了嘛,三子棋嘛,行列都为3啊,数组下标是从0开始的,你那个for循环用的又是<,3的话不就正好执行3次吗?

    评论

报告相同问题?

问题事件

  • 创建了问题 8月16日

悬赏问题

  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥50 安装华大九天aether
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)