tags:

views:

168

answers:

1

in the following c code:

char name[20];
int a;
int b;

for(i=0;i<10;i++)
{
    printf("\nEnter name, a & b: ");
    scanf("%s %d %d",name,&a,&b);
}

does scanf read in the '\n', entered at the end of scanf() in 1st iteration, for the 2nd iteration inputs?

+2  A: 

scanf leaves the input stream pointing to the \n. In your case it doesn't make a difference: each time it's called, scanf will move along until it finds the next non-whitespace character. So giving it 10 lines of name, a, b as input will work as you expect.

But consider this:

scanf("%d", &a);
fgets(str, 20, stdin);

fgets reads until it finds the first newline character, so str will just get a value of \n, and fgets will not read the next line of input.

int3