C语言scanf连续输入两个字符 您所在的位置:网站首页 scanf如何输入字符串空格 C语言scanf连续输入两个字符

C语言scanf连续输入两个字符

2023-10-28 07:18| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有