c语言清除键盘缓冲区函数,C语言程序中清除键盘缓冲区的方法
第四期2006年12月益阳职业技术学院学报
JournalofYiyangVocationalandTechnicalCollegeNO.4Dec.2006
C语言程序中清除键盘缓冲区的方法
杨长虹
(益阳职业技术学院
[摘
湖南益阳413000)
要]在进行数据输入时,有时会发生因键盘缓冲区中有键值而导致输入数据有误,本文介绍在C语言
程序中清除缓冲区中键值的方法。
[关键词]键盘缓冲区[中图分类号]TP316
C语言清除
[文献标识码]A
一、直接清除法
当你在进行数据输入前,如能确认键盘缓冲区中只有一个多余的键值时,可以利用下面程序中的getch()函数,将其读走。本程序在使用scanf()函数接受键盘输入数据之前,先用一个getch()函数将其多余的那个键值“清除”。
while(kbhit()=O)/{*按任意键跳出循环水*/}getch();/*读出多余的一个键值/*printf(“\nPleaseinputyourname:”);scanf(“%s”,&name);
二、采用循环读值法
功能为消除所有打开文件所对应的缓冲区,同时包
括键盘缓冲区。
四、调用DOS中断方法
使用函数intdos()调用OxOc(12)号中断来清除缓冲区,这种方法比上几种方法都要节省资源。
clrkey(void)
{unionREGSregs;regs.h.ah=OxOc;intdos(&regs,&regs);
五、采用远程指针直接控制
当你进行数据输入前,如果不能确认有几个多
余的键被按下时,可以使用循环来读取键值,直到把所有键值读完为止,这种方法比较实在而且很有效。下面用一个函数来实现这个功能。在函数中,实际是多次使用getch()将缓冲区内的数据读出,使用while()循环,利用bioskey()来检测键盘缓冲区中是否有键值,作为循环条件。如果键盘缓冲区中有键值(即while()条件为真)时则用get()来“清除”,否则退出循环。
clkey(viod)
{while(bioskey(1))getch();}三、使用清除文件缓冲区函数fflush()
该函数的原形为fflush(FILE*stream),其作用为清除stream指向的文件缓冲区内容,在stdio.h头文件中有说明,指明其参数为标准设备文件———stdin(即键盘),即fflush(stdin)。另外还有一个类似的函数:flushball(),它不带参数,
键盘缓冲区在内存中实际上是一个先进先出
的循环队列,它使用两个指针BUFFER1和BUFFER2指向队列中的数据,其中BUFFER1指向数据的开始,BUFFER2指向数据的结尾。当*BUFFER1=*BUFFER2时,即当两个指针所指的数据地址相同时,表明队列中没有数据,即键盘缓冲区为空。在内存中BUGGER1指针值存放于0040:001a处,即十进制的1050处,BUFFER2存放于0040:001c处,即十进制的1052处。我们可以先定义这两个远程指针,然后让它们相等即可。
charfar*pl_kb=(charfar*)1050;charfaI*p2一kb=(charfar*)1052;if(*Pl_kb!=p2_kb)(*pl_kb=*p2_kb;}
以上五种方法各有千秋,有的程序简单容易实现,有的可节省资源,适用于不同的环境,作为程序员可以按需所用。
(责任编辑:冯晖)
[收稿日期]2006-11-15
[作者简介]杨长虹,男,益阳职业技术学院计算机应用工程系副主任。
-50-
c语言清除键盘缓冲区函数,C语言程序中清除键盘缓冲区的方法相关推荐
- R语言使用na.omit函数删除向量数据中的缺失值(NA值)
R语言使用na.omit函数删除向量数据中的缺失值(NA值) 目录 R语言使用na.omit函数删除向量数据中的缺失值(NA值) R 语言特点 R语言使用na.omit函数删除向量数据中的缺失值(NA ...
- c语言数组去重的函数,C语言之函数 - osc_wpg0dgym的个人空间 - OSCHINA - 中文开源技术交流社区...
函数 对于初学C语言的人来说可能会问函数是什么?在这里我有一个通俗的解释:函数就是一个盒子,在这个盒子里面可以封装你想实现的功能,之后通过主函数进行调用即可 为什么要使用函数? 对于一个层序来说,模块 ...
- 应用c语言编写adams用户自定义函数的研究,C语言编写adams用户自定义函数导入到adams中function_builder.doc...
C语言编写adams用户自定义函数导入到adams中function_builder 应用C语言编写adams用户自定义函数导入到adams中function builder 的整个过程 当前使用软件 ...
- R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的计数个数、均值和中位数、使用funs函数指定函数列表
R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的计数个数.均值和中位数.使用funs函数指定函数列表 目录
- R语言dplyr包summarise_all函数计算dataframe数据中指定因子变量的水平的个数(levels)以及缺失值的个数(missing values)
R语言dplyr包summarise_all函数计算dataframe数据中指定因子变量的水平的个数(levels)以及缺失值的个数(missing values) 目录
- R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的计数个数、均值和中位数、使用list函数指定函数列表并指定自定义函数名称
R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的计数个数.均值和中位数.使用list函数指定函数列表并指定自定义函数名称 目录
- R语言dplyr包summarise_all函数计算dataframe数据中所有数值数据列的均值和中位数、使用sapply筛选数值数据列(Summarize all Numeric Variables
R语言dplyr包summarise_all函数计算dataframe数据中所有数值数据列的均值和中位数.使用sapply筛选数值数据列(Summarize all Numeric Variables ...
- R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的方差
R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的方差 目录 R语言dplyr包summarise_at函数
- R语言dplyr包summarise_if函数计算dataframe数据中所有数值数据列的均值和中位数、基于条件进行数据汇总分析(Summarize all Numeric Variables)
R语言dplyr包summarise_if函数计算dataframe数据中所有数值数据列的均值和中位数.基于条件进行数据汇总分析(Summarize all Numeric Variables) 目录
最新文章
- 只适合小模型小训练集的交叉验证
- spring boot中@ResponseBody等注解的作用与区别
- 利用python实现ORM
- 获取ClassLoader的途径
- 硬件基础:理解串口通信以及232,485,422常见问题
- LeetCode 996. 正方形数组的数目(回溯+剪枝)
- maven netty 配置_Netty是业界最流行的NIO框架之一:初识Netty
- Charles 映射本地文件map local
- ucGUI/emWin 自定义中文字库(汉字字库)
- 超分辨 :SRCNN
- Zetero+zotfile+坚果云配置
- 抽象类和具体类的区别
- matlab画根轨迹的渐近线,根轨迹的渐近线.ppt
- 地方麻将、棋牌手游的APP推广只差这项技术
- 微信公众号爬虫的基本原理
- 【需求响应】基于数据驱动的需求响应优化及预测研究(Matlab代码实现)
- 搭建第一个Dapp应用(3)——Solidity防伪溯源存证签证合约——2021.5.3
- 【节点电压法】一道例题示例
- 2021-2025年中国光纤压力传感器行业市场供需与战略研究报告
- plsql登录进去的时候,有个弹窗,但是我勾选了,下次不再显示,但是我又想让他弹出了,怎么恢复?