这里的两个getchar其实为了清除键盘缓冲区中的回车符用的
清除键盘缓冲区中的回车符的目的是防止下一次scanf时,将键盘缓冲区内的回车当作本次用户输入数据给错误地读入
这么看:
loop: printf("Enter month in 2007 to display calender:");
scanf("%d",&a);//读取a值,由于最后那个getchar已经将用户输入b值后敲的那个回车清除,所以loop循环到这里后,可以直接读取用户输入的a值
...
getchar(); //这里的getchar用以清除scanf("%d",&a);输入时,用户输入a值后敲的那个回车
pip: printf("\n Would you like to display another month?(y/n)\n");
scanf("%c",&b);//读取b值,由于上面那个getchar已经将用户输入a值后敲的那个回车清除,所以运行到这里后,可以直接读取用户输入的b值
getchar(); //这里的getchar用以清除scanf("%c",&b);输入时,用户输入b值后敲的那个回车
再来回答你的问题:
简单点说就是一旦我输入了“y”和“回车”,那么是怎么分配给scanf和getchar的,是不是“回车”给了第一个getchar,“y”给了第二个?那么中间的scanf又是干什么的?
一旦输入了“y”和“回车”,那么scanf读取'y'作为b值,"回车"被getchar吸收