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



