Why does the message print twice?
c, while-loop
Solution
It's because when you use `getchar` it returns the next character, but leaves the newline in the input buffer. So the next `getchar` returns that newline.
You should also be careful because `getchar` actually returns an `int` and not a `char`.
You can solve this either by another `getchar`, or use `scanf` like this:
scanf("%c ", &user);
Note the space after the `c` in the above format, it tells `scanf` to read and disregard trailing whitespace.
You could also read a line with e.g. `fgets` and then use a simple `sscanf` on that line, then no extra space is needed.
Problem
I am creating a simple Tic Tac Toe for C, and here is a particular function which I am having a problem with. This is supposed to let the user select 'X' or 'O', and for the most art it works. However, if I enter a wrong symbol, it prints the statement: "Invalid symbol, please re-enter: " twice. Why and how can I fix this? ``` char assign(void) { char user; printf("Would you like to be X or O (Enter your choice): "); user=getchar(); while(user != 'X' && user != 'x' && user != 'O' && user != 'o') { printf("Invalid symbol, please re-enter: "); user=getchar(); } if(user == 'O' || user == 'o') return('O'); else if(user == 'X' || user == 'x') return('X'); } ```