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()檢測(cè)鍵盤(pán)是否有輸入,有則返回非0,否則返回0。(除非按Esc鍵,否則你講一直看見(jiàn)這句話(huà)!!\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 << "無(wú)鍵按下" << endl;cout << "有鍵按下" << endl;system("pause");return 0; }函數(shù)名:kbhit()
功能及返回值: 檢查當(dāng)前是否有鍵盤(pán)輸入,若有則返回一個(gè)非0值,否則返回0
用 法:int kbhit(void);
包含頭文件: conio.h
kbhit()在執(zhí)行時(shí),檢測(cè)是否有按鍵按下,有按下返回非0值,沒(méi)有按下則返回0,是非阻塞函數(shù);
不同于getch()的在執(zhí)行時(shí),檢測(cè)按下什么鍵,如果不按鍵該函數(shù)不返回,也就不進(jìn)行下一步操作,是阻塞函數(shù)。
當(dāng)參數(shù)cmd為1時(shí),bioskey()檢測(cè)是否有鍵按下。沒(méi)有鍵按下時(shí)返回0;有鍵按下時(shí)返回按鍵碼(
任何按鍵碼都不為0),但此時(shí)并不將檢測(cè)到的按鍵碼從鍵盤(pán)緩沖隊(duì)列中清除。 是非阻塞函數(shù);
當(dāng)參數(shù)cmd為0時(shí),bioskey()返回鍵盤(pán)緩沖隊(duì)列中的按鍵碼,并將此按鍵碼從鍵盤(pán)緩沖隊(duì)列中清
除。如果鍵盤(pán)緩沖隊(duì)列為空,則一直等到有鍵按下,才將得到的按鍵碼返回。是阻塞調(diào)用。
實(shí)際上,kbhit()有點(diǎn)像bioskey(1)
函數(shù)原型:int bioskey (int cmd)
說(shuō)明:bioskey()的函數(shù)原型在bios.h中(TC編譯環(huán)境下的函數(shù),VC無(wú)法使用)
bioskey()完成直接鍵盤(pán)操作,cmd的值決定執(zhí)行什么操作。
cmd = 0:
當(dāng)cmd是0,bioskey()返回下一個(gè)在鍵盤(pán)鍵入的值(它將等待到按下一個(gè)鍵)。它返回一個(gè)16位的二進(jìn)制數(shù),包括兩個(gè)不同的值。當(dāng)按下一個(gè)普通鍵時(shí),它的低8位數(shù)存放該字符的ASCII碼,高8位存放該鍵的掃描碼;對(duì)于特殊鍵(如方向鍵、F1~F12等等),低8位為0,高8位字節(jié)存放該鍵的掃描碼。
cmd = 1:
當(dāng)cmd是1,bioskey()查詢(xún)是否按下一個(gè)鍵,若按下一個(gè)鍵則返回非零值,否則返回0。
cmd = 2:
當(dāng)cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert鍵的狀態(tài)。各鍵狀態(tài)存放在返回值的低8位字節(jié)中。
字節(jié)位 含義
0 右邊Shift鍵狀態(tài)
1 左邊Shift鍵狀態(tài)
2 Ctrl鍵狀態(tài)
3 Alt鍵狀態(tài)
4 ScrollLock鍵狀態(tài)
5 NumLock鍵狀態(tài)
6 CapsLock鍵狀態(tài)
7 Insert鍵狀態(tài)
字節(jié)位為1表示該鍵被按下,為0表示松開(kāi)。
system是一個(gè)C語(yǔ)言和C++下的函數(shù)。windows操作系統(tǒng)下system () 函數(shù)詳解主要是在C語(yǔ)言中的應(yīng)用,system函數(shù)需加頭文件
#include<iostream> #include<stdlib.h> #include<string.h> using namespace std;void print() {printf(" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\n");printf("╔═══╧╧C語(yǔ)言關(guān)機(jī)程序 ╧╧═══╗\n");printf("║※1.實(shí)現(xiàn)10分鐘內(nèi)的定時(shí)關(guān)閉計(jì)算機(jī) ║\n");printf("║※2.立即關(guān)閉計(jì)算機(jī) ║\n");printf("║※3.注銷(xiāo)計(jì)算機(jī) ║\n");printf("║※0.退出系統(tǒng) ║\n");printf("╚═════════════════╝\n"); } void main() {system("title 自動(dòng)關(guān)機(jī)程序");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("您想在多少秒后自動(dòng)關(guān)閉計(jì)算機(jī)?(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”)可以實(shí)現(xiàn)凍結(jié)屏幕,便于觀察程序的執(zhí)行結(jié)果;system(“CLS”)可以實(shí)現(xiàn)清屏操作。而調(diào)用color函數(shù)可以改變控制臺(tái)的前景色和背景,具體參數(shù)在下面說(shuō)明。
例如,用 system(“color 0A”); 其中color后面的0是背景色代號(hào),A是前景色代號(hào)。各顏色代碼如下:
0=黑色 1=藍(lán)色 2=綠色 3=湖藍(lán)色 4=紅色 5=紫色 6=黃色 7=白色 8=灰色 9=淡藍(lán)色 A=淡綠色 B=淡淺綠色 C=淡紅色 D=淡紫色 E=淡黃色 F=亮白色
總結(jié)
以上是生活随笔為你收集整理的kbhit(), bioskey(), system(pause)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: xp怎么让计算机开启ftp,Win7和W
- 下一篇: 关于计算机应用梦想作文,我为梦想而努力7