C语言学习笔记->缓冲区

注:scanf()函数和getchar()函数都是从输入流区中取值的,并非直接读取键盘输入值

例:

scanf("%d",&a);

此时你从键盘敲进一个数字12, 那么缓冲区里面不仅存放了一个数字12,还有一个换行符'\n';

但程序只会让a读进数字12;那么缓冲区还有存放在一个'\n'

举几个应用实列:

该程序原本先要实现求键盘多次输入的数字之和,但显然这程序存在问题,浅看一下输出结果先:

 显然,此程序还没有让我判断是否继续就结束了!!!

原因很简单,我们判断是否继续的条件是ch=='y'||ch=='Y';而我们在输入数字的时候缓冲区还存放着一个换行符’\n‘,我们的getchar()要先获取这个换行符,显然换行符不符合判断条件,程序结束。在我代码的第8行中注释也提到了一种解决方案,就是在ch = getchar();前面再写多一行代码ch = getchar();,其目的是获取掉’\n‘,第二个ch = getchar();就可以获取键盘输入缓冲区的新值了。

但这只能获取掉一个缓冲区的字符,如果在输入数字的时后面按了很多空格键呢?

那缓冲区就不仅有一个数字,还有一堆空格字符,还有一个换行符。这个时候还是要实现该程序的话就要在ch = getchar();前清除缓冲区

清除缓冲区用到的是rewind(stdin);函数,此函数包含在stdio.h头文件中

最后程序呈现:

测试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香菜是个好东西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值