C++ 2d字符阵列打印方块。我怎么修理它?

C++ 2d字符阵列打印方块。我怎么修理它?,c++,struct,C++,Struct,我想写一个井字游戏。 这是我的结构游戏: typedef struct { char tabuleiro[3][3]; int casas[9]; jogador* p; } jogo; 我有一个新的游戏功能,如下所示: void novoJogo(jogo* j, jogador* p) { int aux = 1; j->p = p; for (int i = 0; i < 9; ++i) j->casas

我想写一个井字游戏。 这是我的结构游戏:

typedef struct {
    char tabuleiro[3][3];
    int casas[9];
    jogador* p;
} jogo;
我有一个新的游戏功能,如下所示:

void novoJogo(jogo* j, jogador* p) {
    int aux = 1;
    j->p = p;

    for (int i = 0; i < 9; ++i)
        j->casas[i] = i+1;

    for (int k = 0; k < 3; ++k) {
        for (int i = 0; i < 3; ++i) {
            j->tabuleiro[k][i] = (char) aux;
            aux++;
        }
    }
    jogar(j);
}
这是我的打印功能。我已经测试了一些东西,我不认为这里有bug,但你可以这样做:

void print(jogo* j) {
    for (int k = 0; k < 3; ++k) {
        for (int i = 0; i < 3; ++i) {
            if (i == 0)
                cout << j->tabuleiro[k][i] << " | ";
            else if (i == 2)
                cout << " | " << j->tabuleiro[k][i] << endl;
            else
                cout << j->tabuleiro[k][i];
        }
    }
}
void打印(jogo*j){
对于(int k=0;k<3;++k){
对于(int i=0;i<3;++i){
如果(i==0)

tabuleiro[k][i]可以
cout tabuleiro[k][i])
吗?你正在用ASCII码1打印一个字符,而不是字符
'1'
@IgorTandetnik这很有效!问题是:tabuleiro并不总是有整数。事实上,一旦游戏开始,它会很快被“X”和“O”填满。然后改变
j->tabuleiro[k][i]=(char)aux
j->tabuleiro[k][i]=“0”+aux
,您可以正常打印它。决定数组是包含字符还是包含整数,并坚持使用它。关键是感谢大家!@IgorTandetnik解决方案工作得很好。
void print(jogo* j) {
    for (int k = 0; k < 3; ++k) {
        for (int i = 0; i < 3; ++i) {
            if (i == 0)
                cout << j->tabuleiro[k][i] << " | ";
            else if (i == 2)
                cout << " | " << j->tabuleiro[k][i] << endl;
            else
                cout << j->tabuleiro[k][i];
        }
    }
}