вывод показаний неисправностей на плате

#arrays #c #syntax #symbols

Вопрос:

Это моя игра в крестики-нолики.

Идея проста, мы просто меняем ее в основной функции, и это отражается на доске, но я получаю ответ, который в основном является ошибкой, хотя код работает.

Выход:

 |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 occupiedn");
  }
  else if(row > ROWS) {
    printf("That move is not on the boardn");

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

Комментарии:

1. Когда я компилирую этот код, я получаю около двадцати предупреждений компилятора о несоответствии типа между строками в char * двойных кавычках, где char это ожидается. Разве вы их не заметили?

Ответ №1:

Вы должны использовать литералы с одинарными кавычками:

«O», «X» и». » вместо констант char*.

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

Комментарии:

1. Спасибо, я совершенно упустил это из виду. Мы ценим вашу помощь.