C Tutorial
scanf function fails to read input characters as expected when reading continuously.
This issue is due to ENTER key press after entered the character, so second time character input is not promted.
This c program is the example for scanf input character issue. 2nd character is not asked from user due to ENTER key press.
#include<stdio.h> void main() { char ch; printf("\nEnter Character 1: "); scanf("%c", &ch); printf("\nCharacter 1: %c", ch); printf("\nEnter Character 2: "); scanf("%c", &ch); printf("\nCharacter 2: %c", ch); printf("\nEnter Character 3: "); scanf("%c", &ch); printf("\nCharacter 3: %c", ch); }
Output:
$ cc test-char-input.c $ ./a.out Enter Character 1: e Character 1: e Enter Character 2: Character 2: Enter Character 3: r Character 3: r
Even same output when using multiple character variable as well.
#includevoid main() { char ch,ch1; printf("\nEnter Character 1: "); scanf("%c", &ch); printf("\nCharacter 1: %c", ch); printf("\nEnter Character 2: "); scanf("%c", &ch1); printf("\nCharacter 2: %c", ch); printf("\nEnter Character 3: "); scanf("%c", &ch); printf("\nCharacter 3: %c", ch); }
This code is works first time and fails to get input character 2nd time because previously input ENTER key press is considered as input character.
If we use ' ' before %c in scanf, works to get the input character for the c program.
scanf(" %c", &ch);
Updated the above c program and works as expected.
#includevoid main() { char ch; printf("\nEnter Character 1: "); scanf("%c", &ch); printf("\nCharacter 1: %c", ch); printf("\nEnter Character 2: "); scanf(" %c", &ch); printf("\nCharacter 2: %c", ch); printf("\nEnter Character 3: "); scanf(" %c", &ch); printf("\nCharacter 3: %c", ch); }
Output:
$ cc test-char-input.c $ ./a.out Enter Character 1: a Character 1: a Enter Character 2: b Character 2: b Enter Character 3: c Character 3: c
C Tutorial
Privacy Policy | Copyright2020 - All Rights Reserved. | Contact us
| Report website issues in Github
| Facebook page
| Google+ page