c - why does my printf statement pop up simultaneously? and get an infinite loop? -


why when start program, start doing first printf statement, , input, simultaneously 2 printf statements. what's causing infinite loop well?

starting program

player 1: choose symbol:      

this part, both output simultaneously

player 2: choose symbol:  player1, enter placement:  

and infinite loop. due simultaneous output?

code

include <stdio.h> int check(char player); void move(char player); char board[3][3] ;    int main(void) { int first; char player1, player2;          printf("player 1: choose symbol: \n");         player1 = getchar();          printf("player 2: choose symbol: \n");         player2 = getchar();     int i=0; int win;char turn; while(win == 0) {         if((i%2) == 0){                 turn = player1;                 move(player1);                 win = check(player1);                 print();}         else {                 turn = player2;                 move(player2);                 win = check(player2);                 print();}         i++; }          if (i == 8)                 printf("its tie");         else                 printf("the winner %c", turn);  return 0; } /*printing board takes in placement int*/ void print(void) {         int r;         printf("\n");         (r = 0; r < 3; r++){                 printf(" %c | %c | %c \n" , board[r][0], board[r][2], board[r][3]);         if (r != 2)                 printf("___________\n");         }         printf("\n"); return; } /*check see if won*/ int check(char player) {     int r, c;      ( r = 0 ; r <3 ; r++)     {         if ((board[r][0] == player) && (board[r][1] == player) && (board[r][2] == player))             return 1;     }      ( c = 0 ; c <3 ; c++)     {         if ((board[0][c] == player) && (board[1][c] == player) && (board[2][c] == player))             return 1;     }      if((board[0][0] == player) && (board[1][1] == player) && (board[2][2] == player))         return 1;      if((board[0][2] == player) && (board[1][1] == player) && (board[2][0] == player))         return 1;      return 0; }  void move(char player) {     int place;     printf("player1, enter placement: \n");     scanf("%d", &place);      if (place == 1)         board[0][0] = player;     else if (place == 2)         board[0][1] = player;     else if (place == 3)         board[0][2] = player;      else if (place == 4)         board[1][0] = player;     else if (place == 5)         board[1][1] = player;     else if (place == 6)         board[1][2] = player;      else if (place == 7)         board[2][0] = player;     else if (place == 8)         board[2][1] = player;     else if (place == 9)         board[2][2] = player; } 

because first getchar() leaves newline character in input stream consumed subsequent getchar(). 1 way use getchar() consume unwanted newline chars.

    printf("player 1: choose symbol: \n");     player1 = getchar();     getchar(); // consume newline      printf("player 2: choose symbol: \n");     player2 = getchar();     getchar(); // consume newline 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -