无法读取电路板的输出

trouble reading output of the board

这是我的井字游戏。

想法很简单,我们只是在 main 函数中更改它,它反映在板上,但我得到的答案基本上是一个错误,即使代码有效。

输出:

|1|2|3|4|5|6|7|

1|�|�|�|�|�|�|�|

2|�|�|�|�|�|�|�|

3|�|�|�|�|�|�|�|

4|�|�|�|�|�|�|�|

5|�|�|�|�|�|�|�|

6|�|�|�|�|�|�|�|

7|�|�|�|�|�|�|�|

代码:

#include <stdio.h>
#include <stdlib.h>

#ifndef __TRUE_FALSE__
#define __TRUE_FALSE__
#define True 1
#define False 0
#endif

#define ROWS 7
#define COLS 7
#define MARKONE "X"
#define MARKTWO "O"
#define Blank ".."

void InitializeBoard(char[ROWS][COLS]);
void DisplayBoard(char[ROWS][COLS]);    
int PlayerMove(int,int,char[ROWS][COLS],char);

int main(void) {
  char board[ROWS][COLS];

  InitializeBoard(board);

  PlayerMove(1,1,board, MARKONE);
  PlayerMove(1,2,board, MARKONE);
  PlayerMove(4,3,board, MARKONE);
  PlayerMove(1,1,board, MARKONE);
  PlayerMove(6,2,board, MARKTWO);
  PlayerMove(4,12,board, MARKTWO);
  
  DisplayBoard(board);

  return 0;
}

void InitializeBoard(char board[ROWS][COLS])  {
    for(int i=0; i<ROWS; i++)
      for(int j=0; j<COLS; j++)
        board[j][i] = Blank;
};
  
void DisplayBoard(char board[ROWS][COLS]) {
  printf(" |1|2|3|4|5|6|7|\n");

  for(int i = 0; i < COLS; ++i) {
    printf("%c|", '1' + i);

    for(int j = 0; j < ROWS; ++j) {
      printf("%c|", board[i][j]);
    }

    printf("\n");
  }

}

int PlayerMove(int row,int col,char board[ROWS][COLS], char symbol){
  if(board[row][col]!= Blank) {
    printf("That space is already occupied\n");
  }
  else if(row > ROWS) {
    printf("That move is not on the board\n");

  }
  else if(col > COLS) {
    printf("That move is not on the board\n");
  }
  else board[row][col] = symbol;
}

您应该使用单引号字符文字:

'O'、'X' 和“.”而不是 char* 常量。

#define MARKONE 'X'
#define MARKTWO 'O'
#define Blank '.'