3.5进阶:用%c输入数据存在的问题(含错误案例分析)

本文探讨了使用scanf函数以%c格式输入字符数据时遇到的问题,即会读取空白字符如空格、回车。示例程序中,用户输入整型和浮点型数据时正常,但输入字符时未等待用户输入,直接输出了换行符。问题在于scanf函数将回车作为有效字符读入。解决办法是避免读取空白字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题使用%c格式符输入数据时存在的问题

前面我们介绍了如何用scanf函数以c格式输入字符型数据,用scanf以字符型输入数据的时候,需要注意哪些问题呢?
在这里插入图片描述首先来看这个程序,这个程序,就是要求用户分别输入一个整形数,字符型数据和浮点型数据,并且依次把他们向屏幕来输出,就是我们希望得到的运行结果应该是这样的
首先给出这样的一个提示信息,
Please input an integer:12→
用户输入了一个整型数据之后呢,就向屏幕输出这个整型数据
integer:12
接下来提示用户输入一个字符型数据,用户输入了一个字符型数据之后,就向屏幕输出这个字符型数据,
Please input an character :a→
character:a
在接下来提示用户在键盘上输入一个浮点型数据,用户输入了一个浮点型的数据之后呢。
就像屏幕输出这个浮点型数据
Please input a float number :3.5→
float:3.500000
这是我们希望得到的运行结果,
在这里插入图片描述但是事与愿违,这个程序,实际得到的运行结果并不是这个样子的。
实际运行结果是这个样子的,
首先向屏幕输出了一个这样的提示信息,提示用户输入一个整型数据,假设我们用户输入的整型数据是12,然后屏幕确实输出了整型数据12,但是接下来,
Please input an integer:
integer:12
但是接下来程序应该让用户输入一个字符型数据,然后在输出字符型数据,但是我们看到实际上这个程序并没有等待用户从键盘上输入这个字符型数据,就直接输出了字符型数据,并且输出的字符型数据是一个换行
在这里插入图片描述在接下来,提示用户输入一个浮点型数据
假设用户输入的是3.5,然后程序输出用户从键盘输入的这个浮点型数据3.5,从这个运行结果
在这里插入图片描述,我们发现,用户在读入数值型数据,例如整型数据,和浮点型数据,能够保证正确的输入和输出,但是在以C格式符输入和输出的时候,就出现了错误,那么这里scanf函数以c格式读给变量b的值是什么呢?它是在我们输入12之后,按的回车键子。也就是scanf函数以c格式读入字符型数据的时候,它会把用户输入的空白字符,包括空格,回车键子,tab键子,都当有效字符来读入。
在这里插入图片描述那么如何来避免scanf,函数以c格式符,以字符型读入空格回车这些空白字符呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值