O scanf () toma ‘\ n’ como input restante do scanf () anterior?

No seguinte código C:

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); } 

scanf lê no '\n' inserido no final do scanf() na 1ª iteração, para as inputs da 2ª iteração?

scanf deixa o stream de input apontando para o \n . No seu caso, não faz diferença: cada vez que é chamado, o scanf se moverá até encontrar o próximo caractere que não seja espaço em branco. Assim, dando-lhe 10 linhas de name, a, b como input funcionará conforme o esperado.

Mas considere isto:

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

fgets lê até encontrar o primeiro caractere de nova linha, então str irá apenas obter um valor de \n , e fgets não lerá a próxima linha de input.