Tic-tac-toe for the terminal, written in C

I recently started learning C, and this is my first fairly large (to me) program. It’s a basic tic tac toe game for the console. There’s no ai, it’s just a 2 player game. Anything I can improve?

// Tic Tac Toe in C. V1.0 by James 26/05/2019  #include <stdio.h> #include <stdlib.h> #include <stdbool.h>  #define SIZE 3  // Draws the board along with rows/cols, numbered. void draw_board(char board[]) {     system("clear");     printf("# 1 2 3\n");      // Rows     for (int i = 0, n = 0; i < SIZE; i++)     {         // Columns         printf("%d ", i + 1);         for (int j = 0; j < SIZE; j++)         {             printf("%c ", board[n]);             n++;         }         printf("\n");     } }  // Initializes board to '-' characters. void init_board(char board[]) {     for (int i = 0; i <  SIZE * SIZE; i++)     {         board[i] = '-';     } }  // Returns true if the piece was successfully placed, // false if the position was invalid or already taken. bool place(char board[], char player) {     char posinput[64];      printf("%c, pick your position (xy, rc): ", player);     scanf("%s", posinput); // <-- I realise that this is potentially bad, but realistically,                             // the user would have to be trying to break something, and                            // this is just a little program I made for practice.      int row = (posinput[0] - '0') - 1;     int col = (posinput[1] - '0') - 1;      int pos = col + row * SIZE;      if (pos >= 0 && pos < SIZE * SIZE)     {         if (board[pos] == 'x' || board[pos] == 'o')             return false;          board[pos] = player;         return true;     }      return false; }  // Returns true if there are three of the same chars in a row. // b = board, p = player. Shortened for readability. bool check(char b[], char p)  {     // Check rows     if (b[0] == p && b[1] == p && b[2] == p)         return true;     if (b[3] == p && b[4] == p && b[5] == p)         return true;     if (b[6] == p && b[7] == p && b[8] == p)         return true;       // Check columns     if (b[0] == p && b[3] == p && b[6] == p)         return true;     if (b[1] == p && b[4] == p && b[7] == p)         return true;     if (b[2] == p && b[5] == p && b[8] == p)         return true;       // Check diagonals     if (b[0] == p && b[4] == p && b[8] == p)         return true;     if (b[2] == p && b[4] == p && b[6] == p)         return true;      // If no one won, return false     return false; }  int main(void) {     char board[SIZE * SIZE];     char player = 'x';     init_board(board);      while (true)     {         draw_board(board);          if (place(board, player))         {             if (check(board, player))                 break;              if (player == 'x')                 player = 'o';             else                 player = 'x';         }     }      draw_board(board);     printf("-----------------------------\n");     printf("Player %c wins!!!\n", player);     printf("-----------------------------\n"); }