Question

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?

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top