Function based game of Tic Tac Toe in C

This is a tic-tac-toe game I did in C. It works the way I want, but I feel I could have done it better or shorter. Any input as to how I did it would be appreciated.

Include declarations and prototypes

#include 
#include 
#include 

// Creating prototypes
int init (char ttt1[3][3]);
int display_board (char ttt2[3][3]);
int turn (int * player_turns);
int get_move (char ttt3[3][3], int player_turns2, int * move, char player1[], char player2[]);
int validate_move (int move);
int check_win (char ttt[3][3], int tour);
int update_board (char ttt[3][3], const int * move, int turn);
int () menu;

Principal function

int main (void) {
int play_again = 1; // configure the loop
if (menu () == 1) {// calling the menu
while (play_again == 1) {// while the player wants to play again, repeat
int player_turn = 1;
movement int = 0;
int rota = 1;
char player1[20];
char player2[20];
char ttt[3][3]; // create the matrix
init (ttt); // initialize the board
printf ("Enter the name of Player 1 (without using spaces):");
scanf ("% s", player1);
printf ("% s, you're & # 39; X & # 39;  n", player1);
printf ("Enter the name of player 2 (without using spaces):");
scanf ("% s", player2);
printf ("% s, are & # 39; O & # 39;  n", player2);
while (check_win (ttt, rota) == 0) {
get_move (ttt, player_turn, & move, player1, player2); // receives the player's movements
validate_move (move); // call the function to validate the movements
update_board (ttt, & move, player_turn); // call the function that updates the board according to the movement of the players
display_board (ttt); // show the board again
turn (and player_turn); // call the function to change whose turn it is
turns ++; // turn increments
}
printf ("Would you like to play again? (1 for yes, 2 for no)");
scanf ("% d", & play_again);
}
}
returns 0;
}

Board initializer

// configure the board for use in the game
int init (char ttt1[3][3]) {
ttt1[0][0]    = & # 39; 1 & # 39 ;;
ttt1[0][1]    = & # 39; 2 & # 39 ;;
ttt1[0][2]    = & # 39; 3 & # 39 ;;
ttt1[1][0]    = & # 39; 4 & # 39 ;;
ttt1[1][1]    = & # 39; 5 & # 39 ;;
ttt1[1][2]    = & # 39; 6 & # 39 ;;
ttt1[2][0]    = & # 39; 7 & # 39 ;;
ttt1[2][1]    = & # 39; 8 & # 39 ;;
ttt1[2][2]    = & # 39; 9 & # 39 ;;
returns 0;
}

Board screen

This shows the board as it should, but I need a way to clean the screen. I've tried some forms that I found online, but since I'm on Mac OS, none of them worked. What is a good way to erase the screen that is portable?

// showing the board on the screen
int display_board (char ttt2[3][3]) {
printf ("% c |% c |% c  n", ttt2[0][0], ttt2[0][1], ttt2[0][2]); // shows the top row
printf ("----------  n");
printf ("% c |% c |% c  n", ttt2[1][0], ttt2[1][1], ttt2[1][2]); // shows the middle row
printf ("----------  n");
printf ("% c |% c |% c  n", ttt2[2][0], ttt2[2][1], ttt2[2][2]); // shows the bottom row
returns 0;
}

Which turn

int turn (int * player_turns1) {
if (* player_turns1 == 1) {// if it's the player's turn
* player_turns1 = 2; // change it to player two's turn
}
else if (* player_turns1 == 2) {// if it is player two's turn
* player_turns1 = 1; // change it to the player's turn
}
returns 0;
}

Movement recovery

// get the movement of the player depending on who the turn is
int get_move (char ttt3[3][3], int player_turns2, int * move, char player1_1[], char player2_1[]) {
if (player_turns2 == 1) {// if it's the player's turn
display_board (ttt3); // show the board
printf ("% s, enter where you would like to move:", player1_1); // ask about the move
scanf ("% d", move); // get the player's movement
}
yes no (player_turns2 == 2) {// if it's player two's turn
display_board (ttt3); // show the board
printf ("% s, enter where you would like to move:", player2_1); // ask about the move
scanf ("% d", move); // get the player's movement
}
return * move
}

Move validator

int validate_move (int move1) {
yes (move1 < 1 || move1 > 9) {// if the movement is on the board
returns 0;
}
else // if the movement does not fall on the board
returns 1;
}

Update the board

    // Function that updates the board with the movement of the user.
int update_board (char ttt[3][3], const int * move, int turn) {
if (* move == 1 && turn == 1) // the top left is chosen by player one
ttt[0][0]    = & # 39; X & # 39 ;; // set the square to x
otherwise (* move == 1 && turn == 2) // player two chooses the top left
ttt[0][0]    = & # 39; O & # 39 ;; // set the square in o
otherwise, if (* move == 2 && turn == 1) // the upper center part is chosen by player one
ttt[0][1]    = & # 39; X & # 39 ;; // set the square to x
otherwise (* move == 2 && turn == 2) // player two chooses the top half
ttt[0][1]    = & # 39; O & # 39 ;; // set the square in o
otherwise (* move == 3 && turn == 1) // the top right is chosen by player one
ttt[0][2]    = & # 39; X & # 39 ;; // set the square to x
if not (* move == 3 && turn == 2) // the top right is chosen by player two
ttt[0][2]    = & # 39; O & # 39 ;; // set the square in o
otherwise (* move == 4 && turn == 1) // the center one is chosen by the left
ttt[1][0]    = & # 39; X & # 39 ;; // set the square to x
otherwise (* move == 4 && turn == 2) // player two chooses the left center
ttt[1][0]    = & # 39; O & # 39 ;; // set the square in o
otherwise (* move == 5 && turn == 1) // middle is chosen by player one
ttt[1][1]    = & # 39; X & # 39 ;; // set the square to x
otherwise (* move == 5 && turn == 2) // middle is chosen by player two
ttt[1][1]    = & # 39; O & # 39 ;; // set the square in o
otherwise (* move == 6 && turn == 1) // middle right is chosen by player one
ttt[1][2]    = & # 39; X & # 39 ;; // set the square to x
otherwise (* move == 6 && turn == 2) // player two chooses the middle right
ttt[1][2]    = & # 39; O & # 39 ;; // set the square in o
otherwise (* move == 7 && turn == 1) // the bottom right is chosen by player one
ttt[2][0]    = & # 39; X & # 39 ;; // set the square to x
otherwise (* move == 7 && turn == 2) // player two chooses the bottom right
ttt[2][0]    = & # 39; O & # 39 ;; // set the square in o
otherwise (* move == 8 && turn == 1) // the lower half is chosen by player one
ttt[2][1]    = & # 39; X & # 39 ;; // set the square to x
otherwise, if (* move == 8 && turn == 2) // the lower half is chosen by player two
ttt[2][1]    = & # 39; O & # 39 ;; // set the square in o
otherwise (* move == 9 && turn == 1) // the bottom right is chosen by player one
ttt[2][2]    = & # 39; X & # 39 ;; // set the square to x
otherwise (* move == 9 && turn == 2) // the bottom right is chosen by player two
ttt[2][2]    = & # 39; O & # 39 ;; // set the square in o
returns 0;
}

Victory / Tie Check

// Check the board to see if there is a winner.
int check_win (char ttt[3][3], turns 1) {
yes[0][0]    == ttt[0][1]    && ttt[0][1]    == ttt[0][2]) {// horizontal control of the top row
printf ("Congratulations, you won!  n");
returns 1;
}
if not[1][0]    == ttt[1][1]    && ttt[1][1]    == ttt[1][2]) {// horizontal control of the central row
printf ("Congratulations, you won!  n");
returns 1;
}
if not[2][0]    == ttt[2][1]    && ttt[2][1]    == ttt[2][2]) {// horizontal control of the bottom row
printf ("Congratulations, you won!  n");
returns 1;
}
if not[0][0]    == ttt[1][0]    && ttt[1][0]    == ttt[2][0]) {// vertical control of the left column
printf ("Congratulations, you won!  n");
returns 1;
}
if not[0][1]    == ttt[1][1]    && ttt[1][1]    == ttt[2][1]) {// vertical verification of the central column
printf ("Congratulations, you won!  n");
returns 1;
}
if not[0][2]    == ttt[1][2]    && ttt[1][2]    == ttt[2][2]) {// vertical control column right
printf ("Congratulations, you won!  n");
returns 1;
}
if not[0][0]    == ttt[1][1]    && ttt[1][1]    == ttt[2][2]) {// up, diagonal left, right, diagonal
printf ("Congratulations, you won!  n");
returns 1;
}
if not[2][0]    == ttt[1][1]    && ttt[1][1]    == ttt[0][2]) {// top right to bottom left diagonal
printf ("Congratulations, you won!  n");
returns 1;
}
else if (turns1> = 10) // check if the game ends in a draw
printf ("The game ends in a draw, nobody wins.  n");
plus
returns 0;
}

Menu function

Switch / Case seemed to be the best way I could think of making a menu. Options 2-4 are my next projects that I will be working on.

// the function that controls the menu
int () {
state int = 0; // set the state variable
printf ("Welcome to my game Tic Tac Toe!  n");
printf ("How would you like to play?  n");
printf ("1. 2D Player vs. Player  n");
printf ("2. 2D player vs. computer (not yet ready)  n");
printf ("3. 3D Player vs. Player (not yet ready)  n");
printf ("3. 3D player against computer (not yet ready)  n");
printf ("Enter your choice:");
scanf ("% d", & status); // get the user's choice for the menu
switch (state) {
case 1: // option 1 in the menu
returns 1;
Case 2: // option 2 on the menu
returns 2;
Case 3: // Option 3 on the menu
return 3;
case 4: // option 4 on the menu
return 4;
default: // if an invalid option is chosen
printf ("There was an error, try again.");
}
}

I know that this code works the way I want but I feel it is too long or that there are easier ways to accomplish some of the tasks. Once again, any help or input is greatly appreciated.