
想要输出c1=A,c2=a,为什么c1,c2输出不出来?请大家指出我的错误
因为前面读取浮点数时遗留在缓冲区的换行符没有被读走,而被c1读取了,然后导致获取字符输入错误了;
可以在获取字符前, 先使用getchar()读走前面的换行,然后再在输入的两个字符中间加个逗号即可。
修改如下:
参考链接:
scanf()避免读入上次输入的换行符_怎么让scanf不换行-CSDN博客
C语言的scanf()函数在接收输入单个字符时会把上一次输入的回车符号当做这次输入的字符,造成无法正确的输入字符数据。这恐怕是初学C的童鞋门遇到的最头疼的问题了。今天给大家提供四种解决方法供借鉴。1、在scanf()中使用’\n’屏蔽回车符号。scanf("%d\n",&n); //使用’\n’过滤回车scanf("%c",&c);2、在scanf()格式串最前面添加空格,..._怎么让scanf不换行
https://blog.csdn.net/qq_33508523/article/details/88089631
#include <stdio.h>
int main(void){
int a,b;
float x,y;
char c1,c2;
scanf("%d,%d",&a,&b);
scanf("%f,%e",&x,&y);
// https://blog.csdn.net/qq_33508523/article/details/88089631
getchar(); // 在获取字符前,可以使用getchar()读走前面读取浮点数时遗留在缓冲区的换行
scanf("%c,%c",&c1,&c2); // 然后再在输入的两个字符中间加一个逗号,以匹配scanf()里面的逗号
printf("a=%d,b=%d\n",a,b);
printf("x=%.1f,y=%.2f\n",x,y);
printf("c1=%c,c2=%c\n",c1,c2);
return 0;
}
