用getchar()输入数据的主要问题(未按照本意输出)—以及解决方法

引例:
在这里插入图片描述
现象:

用getchar()函数输入字符时,它会将所有的用户输入(包括回车符),都先放入数据缓冲区中。

原因:
它是以行缓冲输入方式,进行输入。

  • 相当于一次性把键盘输入的一行字符都放入输入缓冲区(回车键也被放入)在这里插入图片描述
  • 然后再从缓冲区逐个读取字符
    例:
1.	#include <stdio.h>
2.	int main()
3.	{
4.	    char ch1, ch2;
5.	    ch1 = getchar();
6.	    printf("ch1=%c\n", ch1);
7.	    ch2 = getchar();
8.	    printf("ch2=%c\n", ch2);
9.	    return 0;
10.	}

如何修改这个程序使其得到如下的输出结果?
a↙
ch1=a
b↙
ch2=b

有几种处理方法:
1、使用getchar()吸收多余字符;但如果多余字符不止一个且不固定时不适用。在6,7行插入

getchar()

2、使用%*c 吸收多余字符;同上。(抑制字符“ * ”)
3、使用% c (c前有空格),可以吸取多个空格,回车,跳格,相对灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值