c - 如何从函数返回一个二维数组到主函数,并将其保存在另一个数组中?

标签 c arrays

我正在编写一个游戏“Tic Tac Toe” 我要求每个玩家在两个不同的函数中输入他们的下一步行动, 然后我将他们的 Action 保存在二维数组中,并将该数组保存在主函数中的另一个二维数组中。 但是当我打印数组时,当第二个玩家进入下一步 Action 时,它会更改字符符号。 PS:这是一个字符数组。 这是我的代码

char player1(char board[N][N], int n)
{
    int  k, l;
    print_player_turn(1);
    scanf("%d%d", &k, &l);
    board[k - 1][l - 1] = 'X';
    print_board(board, n);
    return board;
}
char player2(char board[N][N], int n)
{
    int  k, l;
    print_player_turn(2);
    scanf("%d%d", &k, &l);
    board[k - 1][l - 1] = 'O';
    print_board(board, n);
    return board;
}
int main()
{
    char board[N][N];
    int n;
    print_welcome();
    print_enter_board_size();
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            board[i][j] = '_';
    print_board(board, n);
    char* ptr = board;
    while (isFull(board,n)==0)
    {
        board[0][0] = player1(board, n);
        if (XloseGeneral(board, n) == 1)
        {
            print_winner(2);
            return 0;
        }
        board[0][0] = player2(board, n);
        if (OloseGeneral(board, n) == 1)
        {
            print_winner(1);
            return 0;
        }
    }
    print_tie();

} 

最佳答案

我建议您扩展 2D 数组“board”的范围,以便包括玩家 1 和玩家 2 在内的所有方法都可以访问它,而不是将其作为参数传递。

通过这种方式,您可以确保对同一变量进行修改,并且不会发生重新初始化,从而导致丢失先前的条目。

关于c - 如何从函数返回一个二维数组到主函数,并将其保存在另一个数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59356266/

相关文章:

c - 读者 - C 语言的作者 - 我哪里错了?

c++ - 模棱两可的声明

c - 如何在一个循环中声明多个不同大小的数组?

javascript - 在调用我创建的新函数内部创建的函数时如何修复不是函数错误

php - 使用PHP的“Notice: Undefined variable”,“Notice: Undefined index”和“Notice: Undefined offset”

java - 查看 Java 数组的一部分

c - 指向数组的指针地址

c - 在另一个文件中使用没有结构名称的结构作为外部

c - 如何合并传递给具有可变参数的函数的数组

c - 嵌套数组(6 维)的替代方案,内存间隙保留 O(1) 访问