The program doesn't stop on scanf("%c", &ch) line, why? [duplicate]
Let's say you input 2 when you're reading for num. The actual input stream will be 2\n (\n is the newline character). 2 goes into the num, and there remains \n, which goes into ch. To avoid this, add a whitespace in format specifier.
scanf(" %c", &ch);
This will ignore any whitespaces, newlines or tabs.
The reason behind this is the newline \n
character left behind by previous scanf
, when pressing Enter key, for the next read of scanf
. When the statement
scanf("%c", &ch);
executed then it reads that \n
left behind by the previous scanf
.
To eat up this \n
you can use a space before %c
specifier. A space before the %c
specifier is able to eat up any number of white-space characters.
scanf(" %c", &ch);
^ a space