input - Read two characters consecutively using scanf() in C -
i trying input 2 characters user t number of times. here code :
int main() { int t; scanf("%d",&t); char a,b; for(i=0; i<t; i++) { printf("enter a: "); scanf("%c",&a); printf("enter b:"); scanf("%c",&b); } return 0; } strangely output first time is:
enter a: enter b: that is, code doesn't wait value of a.
the problem scanf("%d", &t) leaves newline in input buffer, consumed scanf("%c", &a) (and hence a assigned newline character). have consume newline getchar();.
another approach add space in scanf() format specifier ignore leading whitespace characters (this includes newline). example:
for(i=0; i<t; i++) { printf("enter a: "); scanf(" %c",&a); printf("enter b: "); scanf(" %c",&b); } if prefer using getchar() consume newlines, you'd have this:
for(i=0; i<t; i++) { getchar(); printf("enter a: "); scanf("%c",&a); getchar(); printf("enter b:"); scanf("%c",&b); } i consider former approach superior, because ignores arbitrary number of whitespaces, whereas getchar() consumes one.
Comments
Post a Comment