在C语言中,在输入过程中,用回车键换行时,因为回车键也是字符,所以可能会被后面的scanf吸收,即将回车赋值给后面的字符型变量。
#include<stdio.h>
int main ()
{
int a;
char c;
scanf("%d",&a);
scanf("%c",&c);
printf("%d\n",a);
printf("%c\n",c);
return 0;
}
以上代码中如果第一个scanf输入完后,用回车来结束对变量a的输入,按下回车后程序会直接结束赋值,开始输出结果,此时的变量c中存放的就是回车符。
解决办法
1:第一个scanf函数后加 fflush(stdin);可以用来清除回车键
2:第一个scanf后加 getchar();来吸收回车键
3:第一个scanf改为scanf("%d\n",&a);
4:第二个scanf改为scanf("\n%c",&c);