栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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头文件中

最后程序呈现:

测试:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1029232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号