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

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=亮白色

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值