【问题标题】:How to print single chars from 2D arrays如何从二维数组打印单个字符
【发布时间】:2023-03-13 00:17:02
【问题描述】:

我正在尝试打印一个空的井字游戏表,但是当程序到达第二个 for 循环时它崩溃了。

void pBoard(char board[3][3])
{
    int i;
    int j;
    printf("  0 1 2");
    for (i = 0; i < SIZE; ++i){
        printf("\n%d ", i); //After this it crashes
        for (j = 0; j < SIZE; ++j){
            printf("%c ", board[i][j]);
        }
    }
}

这会打印出来

        0 1 2
      0

编辑:评论系统似乎不允许我像在这里一样格式化代码。我用

调用了这个函数
 while(choice != 'P'){
        pBoard(board[3][3]);
        player = 'X';
        play(board[3][3], player);
        if (checkWinner(board[3][3])){
            break;
        }
        player = 'O';
        play(board[3][3], player);
        if (checkWinner(board[3][3])){
            break;
        }
    }

大小定义为 3。

我在执行过程中收到一条错误消息。

【问题讨论】:

  • 请说明您使用哪个参数调用pBoard,以及如何定义SIZE
  • 当你说“崩溃”时,你会得到堆栈跟踪或错误消息/代码吗?
  • 编辑帖子,因为评论很奇怪
  • 您需要勾勒出空板的外观。例如,可以用 空格 字符填充空槽。这样一来,在打印您的电路板时只需进行一次移动,您将在某个坐标处获得一个带有单个 X 的 2D 输出,其余的将是 空格 字符。
  • 否则,pBoard 按预期工作。你可以用板子测试这个:char board[3][3] = {'X', 'O', ' ', 'O', 'X', 'O', ' ', 'O', ' '};,调用pBoard(board);会输出整个板子。

标签: c multidimensional-array char


【解决方案1】:

您的问题是您使用单个字符调用 pboard:

pBoard(board[3][3]);

你应该用一个数组来调用它:

pBoard(board);

我用这个线束测试过:

#include <stdio.h>

#define SIZE 3
void pBoard(char board[3][3])
{
    int i;
    int j;
    printf("  0 1 2");
    for (i = 0; i < SIZE; ++i){
        printf("\n%d ", i); //After this it crashes
        for (j = 0; j < SIZE; ++j){
            printf("%c ", board[i][j]);
        }
    }
}

int main(int argc, char* argv[]) {
    char board[3][3] = {{' ',' ',' '},
                        {' ',' ',' '},
                        {' ',' ',' '}};
    // Not this! "pBoard(board[3][3]);"
    // This instead. "pBoard(board);"
    pBoard(board);

}

【讨论】:

  • 成功了,谢谢。很抱歉回复晚了,我发布此问题后不久,我的电脑就无法使用了。
猜你喜欢
  • 2019-10-24
  • 2016-02-15
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 2020-02-25
  • 2017-12-29
  • 2011-01-24
  • 2022-11-16
相关资源
最近更新 更多