C语言新手, 求大神解答关于scanf缓存区的问题
最近刚开始用scanf 发现了缓存区有几个问题 求大神解答第一个程序
char l;
while (!islower(l))
{
printf("Please enter a letter:");
scanf("%c",&l);
setbuf(stdin,NULL);
}
当我不加最后一行清理缓存的话,如果我输入了A等大写字母,会打印两次Please enter a letter:。 这是因为\n被读入了缓存区吗?那为什么两次之后就又可以输入了?
第二个程序
a=0;
while (a == 0)
{
printf("Please input the coefficient of the x^2, x and constant.\n");
printf("Please divide them by commas:");
scanf("%f,%f,%f",&a,&b,&c);
}
这里我感觉和上面一个程序差不多,但是如果我a输了等于0, 不用清理缓存区还是能够在下一次循环就能输入。这又是为什么?就算是
scanf("%f",&a);也是每一次循环都可以输入?
求大神解答!谢谢~