kbhit(), bioskey(), system("pause")

来源:互联网 发布:java web 工作流引擎 编辑:程序博客网 时间:2024/06/10 15:00

2017.09.18 kbhit(), bioskey(), system(“pause”)

#include<iostream>#include<conio.h>#include<stdlib.h>using namespace std;int main(){    char ch;    while(ch != 27)    {        printf("kbhit()检测键盘是否有输入,有则返回非0,否则返回0。(除非按Esc键,否则你讲一直看见这句话!!\n");        if(kbhit())            ch = getch();    }    printf("End!\n");    system("pause");    return 0;}
#include<iostream>#include<conio.h>using namespace std;int main(){    while(!kbhit())        cout << "无键按下" << endl;    cout << "有键按下" << endl;    system("pause");    return 0;}

函数名:kbhit()
功能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
用 法:int kbhit(void);
包含头文件: conio.h


kbhit()在执行时,检测是否有按键按下,有按下返回非0值,没有按下则返回0,是非阻塞函数;
不同于getch()的在执行时,检测按下什么键,如果不按键该函数不返回,也就不进行下一步操作,是阻塞函数。
当参数cmd为1时,bioskey()检测是否有键按下。没有键按下时返回0;有键按下时返回按键码(
任何按键码都不为0),但此时并不将检测到的按键码从键盘缓冲队列中清除。 是非阻塞函数;
当参数cmd为0时,bioskey()返回键盘缓冲队列中的按键码,并将此按键码从键盘缓冲队列中清
除。如果键盘缓冲队列为空,则一直等到有键按下,才将得到的按键码返回。是阻塞调用。
实际上,kbhit()有点像bioskey(1)


函数原型:int bioskey (int cmd)
说明:bioskey()的函数原型在bios.h中(TC编译环境下的函数,VC无法使用)
bioskey()完成直接键盘操作,cmd的值决定执行什么操作。
cmd = 0:
当cmd是0,bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。
cmd = 1:
当cmd是1,bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。
cmd = 2:
当cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存放在返回值的低8位字节中。
字节位 含义
0 右边Shift键状态
1 左边Shift键状态
2 Ctrl键状态
3 Alt键状态
4 ScrollLock键状态
5 NumLock键状态
6 CapsLock键状态
7 Insert键状态
字节位为1表示该键被按下,为0表示松开。


system是一个C语言和C++下的函数。windows操作系统下system () 函数详解主要是在C语言中的应用,system函数需加头文件

#include<iostream>#include<stdlib.h>#include<string.h>using namespace std;void print(){    printf(" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\n");    printf("╔═══╧╧C语言关机程序 ╧╧═══╗\n");    printf("║※1.实现10分钟内的定时关闭计算机  ║\n");    printf("║※2.立即关闭计算机               ║\n");    printf("║※3.注销计算机                   ║\n");    printf("║※0.退出系统                     ║\n");    printf("╚═════════════════╝\n");}void main(){    system("title 自动关机程序");    system("mode con cols=48 lines=25");    system("color 0B");    system("date /T");    system("TIME /T");    char cmd[20] = "shutdown -s -t ";    char t[5] = "0";    print();    int c;    scanf("%d", &c);    getchar();    switch(c)    {    case 1:        printf("您想在多少秒后自动关闭计算机?(0~600)\n");        scanf("%s", &t);        system(strcat(cmd, t));        break;    case 2:        system("shutdown -p");        break;    case 3:        system("shutdown -l");        break;    case 0:break;    default:printf("Error!\n");    }    system("pause");    exit(0);}

system(“pause”)可以实现冻结屏幕,便于观察程序的执行结果;system(“CLS”)可以实现清屏操作。而调用color函数可以改变控制台的前景色和背景,具体参数在下面说明。
例如,用 system(“color 0A”); 其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:
0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色

原创粉丝点击