The problem is that %c does not skip whitespace characters. When you enter the data the way you have done a will get the newline character between 6 and *.
If you write the input without anything between 6 and * you'll see that it works.
3 6* _ 13 16
To consume all whitespaces before reading the character you can add a space before %c.
So you mean that the first %c reads a newline character(\n), right? Then b reads *. That's why when reading x which is a %d but I input a symbol(_), it stops right away!! Got it!! Tks~