下面根据程序运行步骤,写出原因,并写出解决方法。希望对你有用!
main()
{
char mystr;
scanf("%c",&mystr);
/*假如输入字符b,并按回车键(注意此时还向键盘缓存区送入了回车字符“\n”)*/
while(mystr!='a')
/*b!=a,进入循环*/
{
printf("aaaa\n");
/*打印出aaaa*/
scanf("%c",&mystr); /*此时这个输入语句并不会让你输入数据,而是直接读取上回你输入数据后按下的回车字符“\n”,即此时变量mystr中的值为回车字符“\n”,然后继续循环,即回车字符\n
!=a,所以又打出aaaa,然后,由于键盘缓存区中的数据被读取完了,此时scanf语句才会让你输入数据,并读取你输入的数据。*/
解决方法:在scanf函数前加一个fflush(stdin);语句。
fflush(stdin);语句的作用:强制清除键盘缓存区中的数据。
}
printf("bbbbbb");
getch();