C语言scanf连续输入两个字符 | 您所在的位置:网站首页 › scanf如何输入字符串空格 › C语言scanf连续输入两个字符 |
C语言scanf函数连续输入两个字符出现的问题 上代码 //初始代码,输入1,2,a,b,每次输入按了一次回车 int a,b; char c,d; scanf("%d%d",&a&b); scanf("%c%c",%c&d); printf("%d\n%d\n",a,b); printf("%c\n%c",c,d); //预期输出1,2,a,b //结果输出 1 2 a //上一行不是没有,是一个回车字符根本原因: scanf函数是从标准缓冲区读取字符的,由于每次输入之后都按了一次回车,标准缓冲区记录了这次回车,而char类型会记录这个回车,并赋值给了变量d 解决方案一 通过fflush(stdin);清除标准缓冲区,上代码 int a,b; char c,d; scanf("%d%d",&a&b); fflush(stdio); scanf("%c",%c); fflush(stdio); scanf("%c",&d); printf("%d\n%d\n",a,b); printf("%c\n%c",c,d); //得到预期结果解决方案二(推荐) 在%c前面加个空格,空格可抵消前面输入的回车符,上代码 int a,b; char c,d; scanf("%d%d",&a&b); scanf(" %c",%c); scanf(" %c",&d); printf("%d\n%d\n",a,b); printf("%c\n%c",c,d); //得到预期结果解决方案三 多设置一个变量来吸收前面的回车字符 int a,b; char c,d,e; scanf("%d%d",&a&b); scanf("%c",&c); scanf("%c",&d); scanf("%c",&e); printf("%d\n%d\n",a,b); printf("%c\n%c",c,e); //得到预期结果 |
CopyRight 2018-2019 实验室设备网 版权所有 |