关于C语言scanf以字符形式输入是会把空格和回车键输入的解决办法

在编写把%c 输入 2 个数字(0–9),将 2 个数字组成 2 位数并每位上的数字不能相同,以%d 输出题目时,碰到输入字符把空格和回车也输入的问题,多方查找后终于解决

以下是我碰到的问题展示

代码:

#include <stdio.h>

int main(void)
{
	char a,b;
	int sum;
	
	while(scanf("%c %c",&a,&b)==2){      
		printf("%d %d\n",a,b); 

		if(a==b){
			printf("两数不能相等\n");
		}else if(a<'0'||a>'9'||b<'0'||b>'9'){
			printf("请输入0~9之间的数\n"); 
		}else{
			sum=(a-'0')*10+(b-'0');
			printf("%d\n",sum);
		}
	}
	
	
	return 0;
 } 

问题如图所示:
在这里插入图片描述
在第一次输入时正确,但是第二次输入时则出现错误。

###改正方法为:
1.在scanf第一次%c前加一个空格。因为这样做会scanf()第一个空格(enter为一个空格),从第一个非空白字符开始读取。
改动如下:
在这里插入图片描述
2.在在scanf第一次%c前加一个\n,道理和上面一致。
在这里插入图片描述

改正后如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值