#include <stdio.h>
#include<conio.h>
#include<stdlib.h>
int main()
{
int i=;
system("cls");
while(!kbhit())
{
system("cls");
printf("%05d",i++);
}
system("cls");
printf("End.");
getchar();
return ;
}
 /* KBHIT.C: This program loops until the user * presses a key. If _kbhit returns nonzero,
a * keystroke is waiting in the buffer. The program * can call _getch or _getche to get the keystroke. */
#include <conio.h>
#include <stdio.h>
void main( void )
{ /* Display message until key is pressed. */
while( !_kbhit() )
_cputs( "Hit me!! " );//注意与puts()的区别
printf( "/nKey struck was '%c'/n", _getch() );
_getch();
}
 #include<stdio.h>
#include<conio.h>
int main() {
char c;
while() {
if(kbhit()){ /*-1的时候显示并用getchar()读一个字符再显示,若0则直接显示*/
printf("%d",kbhit());
printf("%c",getchar());
}
else
printf("%d",kbhit() ); }
} /*
----------------------------1: kbhit()有键按下返回-1,无键按下返回0;
如果注释起作用的话
运行1:
循环输出0
直到有键按下
getchar()等待回车
循环输出-1
再按键无改观,死循环输出-1.
---如果键盘缓冲区中无剩余字符getchar()也表现为阻塞,并且不按回车不开始读入字符.
以下注释不起作用
运行2:
循环输出0
输入f 回车
循环输出0
第二次按下键
在你输入的字符前屏幕换行,换行之前-1
---屏幕换行说明一次getchar()只从键盘缓冲区消耗一个字符,这个换行符是上次getchar()留下的回车键. 运行3:
循环输出0
输入多个字符,回车
循环输出0
第二次按键
显示多个-1之后,屏幕换行,显示输入的字符000000
---为什么会显示多个负1,这是因为kbhit的状态一直未改变,为什么没改变,见下分析 键盘输入产生硬件中断,程序处理,提交给操作系统,操作系统通知相应程序并等待用户程序取走,kbhit()检测操作系统有没有键盘输入数据要递交过来,若有,其返回-1,若没有,返回0.
直到当程序从操作系统处读取到数据时(getchar,scanf等)再调用kbhit()才会返回0(操作系统与程序的接口处的键盘数据缓冲区清空).
程序读过数据之后将之放到程序内部的数据段的键盘缓冲区(上面两个注释是指程序内部数据段) getchar()会从程序数据段的键盘缓冲区来读取一个字符(读取的同时删除)如果其内容为空的话,刚检测操作系统处有无数据,如果有的话,
读取一行(找回车)到程序数据段后再重新读取一个字符,如果没有数据,或者有数据但没有回车符,则在此阻塞,等待 ------------------------------2: 因此只说kbhit()有键按下返回-1,无键按下返回0;不太正确,
得加上句:如果程序不从操作系统读取键盘数据前,kbhit()将保持-1. kbhit()不起作用的键:ctrl shift caps_lock print_Screen num_lock,INSERT键可以,笔记本上右边alt键和ctrl键之间的也即是鼠标右键
*/

kbhit()的三个测试的更多相关文章

  1. 2018.10.2浪在ACM 集训队第三次测试赛

    2018.10.26 浪在ACM 集训队第三次测试赛 今天是暴力场吗???????可怕 题目一览表 来源 考察知识点 完成时间 A 1275 珠心算测试 NOIP 普及组 2014 暴力??? 201 ...

  2. 两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)

    本篇文章主要介绍了"两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)",主要涉及到两款JSON类库Jackson与JSON-lib的性能对比(新增第三款 ...

  3. stm32+lwip(三):TCP测试

    我是卓波,很高兴你来看我的博客. 系列文章: stm32+lwip(一):使用STM32CubeMX生成项目 stm32+lwip(二):UDP测试 stm32+lwip(三):TCP测试 stm32 ...

  4. 2018.11.2浪在ACM集训队第三次测试赛

    2018.11.2 浪在ACM 集训队第三次测试赛 整理人:孔晓霞 A 珠心算测试 参考博客:[1]李继朋  B 比例简化 参考博客: [1]李继朋 C 螺旋矩阵 参考博客:[1]朱远迪 D 子矩阵 ...

  5. .NET持续集成与自动化部署之路第三篇——测试环境到生产环境的一键部署策略(Windows)

    Jenkins测试环境到生产环境的一键部署策略(Windows) 一.前言     前面我们已经初步实现了开发集成环境.测试环境的持续集成(自动化构建.自动化测试.自动化部署).但生产环境自动化部署迟 ...

  6. PC/APP/H5三端测试的相同与不同

    随着手机应用的不断状态,同一款产品的移动端应用市场占相较PC端也越来越大,那么app与PC端针对这些产品的测试有什么相同与不同之处呢?总结如下: 首先谈一谈相同之处: 一,针对同一个系统功能的测试,三 ...

  7. PC、APP、H5三端测试的相同与不同

    随着手机应用的不断状态,同一款产品的移动端应用市场占相较PC端也越来越大,那么app与PC端针对这些产品的测试有什么相同与不同之处呢?笔者总结如下: 首先谈一谈相同之处... 一,针对同一个系统功能的 ...

  8. PC、APP、H5三端测试的区别

    一,针对同一个系统功能的测试,三端所测的业务流程是一样的 二,一般情况下手机端和PC端都对应一套后台服务,比如说笔者公司所开发的互联网金融平台,整个平台做了分布式服务架构,后台服务包括用户服务.交易服 ...

  9. JUC整理笔记三之测试工具jcstress

    并发测试工具Jcstress使用教程 Jcstress 全称 Java Concurrency Stress,是一种并发压力测试工具,可以帮助研究JVM.java类库和硬件中并发的正确性. Wiki地 ...

随机推荐

  1. camstar --飞达上料

    业务场景:某工厂的SMT车间接到生产PCB(3151502),数量1000片.如果实现飞达进行上料,并在贴片机工作时,系统自动进行物料消耗.3151502的BOM为1107790,1107792,11 ...

  2. jsp发布后应用根目录

    1.发布到tomcat后获取应用的根目录 ServletContext s1=this.getServletContext(); String temp=s1.getRealPath("/& ...

  3. 【推荐】PHP中格式化时间函数date与gmdate的区别 | 修改PHP的默认时区

    PHP中的时间有2个格式化函数:date()和gmdate(),在官方的文档中的描述为: date -- 格式化一个本地时间/日期 gmdate -- 格式化一个 GMT/UTC 日期/时间,返回的是 ...

  4. 洛谷 P1359 租用游艇

    题目描述 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,-,n.游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇.游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1& ...

  5. 使用python爬取东方财富网机构调研数据

    最近有一个需求,需要爬取东方财富网的机构调研数据.数据所在的网页地址为: 机构调研 网页如下所示: 可见数据共有8464页,此处不能直接使用scrapy爬虫进行爬取,因为点击下一页时,浏览器只是发起了 ...

  6. MyEclipse 修改项目字符集

    项目->右键+properties->Resource->Text file container->others->utf-8

  7. Bmob 之 列表查询

    查询列表,返回前20个数据: //创建BmobQuery实例,指定对应要操作的数据表名称 BmobQuery *query = [BmobQuery queryWithClassName:classN ...

  8. js原生设计模式——2面向对象编程之继承—call(this)构造函数式继承

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  9. jQuery如何创建元素

    1.$("<ul>").attr("id","taglist").appendTo("#tagCloud") ...

  10. JDK中的插入排序

    算法 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法--插入排序法,插入排序的基本操作就是将一个数据插入到已经排好 ...