C语言 scanf格式输入函数,在输入字符时出现问题的解决

问题描述
刚学习C语言的同学经常会在学习字符输入时遇到还没有输入字符,但字符变量已经被赋值的情况。如:

#include<stdio.h>
int main(){
	int n;
	char a;
	scanf("%d",&n);//不一定非是整型的只要在输入字符前有过输
				   //入就有可能出现问题
	scanf("%c",&a);
	printf("n=%d,a=%c",n,a);
	return 0;
} 

输入5然后按回车,你会发现还没有输入字符,程序就将结果打印出来了。
并没有输入字符就将结果打印了
这是什么原因导致的呢,原来我们在输入时输入的是5和回车两个字符第一个整型5赋给n而回车赋给了a,而回车符是空白字符所以只能看到换行了不细心的话可能连换行了都看不出来(emmm)。这不是我们要的过程,我们想要的是自己 给两个变量赋值。那怎样解决呢?首先一个简单的做法在输入字符时只要将缓存区的空白字符屏蔽就行了即在%c前加上空格就行了。

#include<stdio.h>
int main(){
	int n;
	char a;
	scanf("%d",&n);
	scanf(" %c",&a);
	printf("n=%d,a=%c",n,a);
	return 0;
} 

输入5回车然后输入a回车
在这里插入图片描述
可以看到完美了!!这里将空白字符屏蔽掉了也就是说所有空白字符的输入都将无效。此处也有问题(emmm)如果就是想输入空白字符呢我就想给它赋个空白的字符咋整?这就要用到getchar()函数了,用它来接收回车。

#include<stdio.h>
int main(){
	int n;
	char a;
	scanf("%d",&n);
	getchar();
	scanf("%c",&a);
	printf("n=%d,a=%c.",n,a);
	return 0;
} 

输入5回车空格回车
在这里插入图片描述
为了空格显示明显我在空格后面加了个‘.’,可以看到=和‘.’之间有个空格。
就是这些了希望有用。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值