新聞中心
c語(yǔ)言中g(shù)etch() 怎么用
getch()這個(gè)函數(shù)是一個(gè)不回顯函數(shù),當(dāng)用戶按下某個(gè)字符時(shí),函數(shù)自動(dòng)讀取,無(wú)需按回車。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站制作、成都做網(wǎng)站服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)。
所在頭文件:conio。
函數(shù)用途:從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上。
函數(shù)原型:int getch(void)。
返回值:讀取的字符。
擴(kuò)展資料:
getch()使用時(shí)易錯(cuò)點(diǎn):
1、所在頭文件是conio。而不是stdio。
2、在使用之前要調(diào)用initscr(),結(jié)束時(shí)要調(diào)用endwin()。否則會(huì)出現(xiàn)不輸入字符這個(gè)函數(shù)
也會(huì)返回的情況。
3、在不同平臺(tái),輸入回車,getch()將返回不同數(shù)值。windows平臺(tái)下ENTER鍵會(huì)產(chǎn)生兩個(gè)轉(zhuǎn)義字符 \r\n,因此getch返回13。unix、 linux系統(tǒng)中ENTER鍵只產(chǎn)生 \n ,因此getch返回10。
4、getch()并非標(biāo)準(zhǔn)C中的函數(shù),不存在C語(yǔ)言中,所以在使用的時(shí)候要注意程序的可移植性。getch函數(shù)在讀取一個(gè)功能鍵或者箭頭(方向)鍵盤(pán)時(shí),函數(shù)會(huì)返回兩次,第一次調(diào)用返回0或者0xE0,第二次調(diào)用返回實(shí)際的鍵值。
參考資料來(lái)源:百度百科-getch()函數(shù)
在dev環(huán)境下,如何利用C語(yǔ)言獲得鍵盤(pán)鍵值?
#includeiostream/*GetKeyState()函數(shù)是windows.h中的函數(shù),當(dāng)括號(hào)內(nèi)的鍵被按下時(shí),其值小于0,*/
#includewindows.h/*并且只要在只要鍵處于被按下的狀態(tài),其值都會(huì)小于0,當(dāng)鍵被松開(kāi)時(shí),其值大于0*/
using namespace std;
int main()
{
while(1){
if((GetKeyState(VK_CONTROL)0)(GetKeyState('A')0)){
cout"CONTROL+A";
while(GetKeyState(VK_CONTROL)0GetKeyState('A')0) ;//只要鍵被按下,就會(huì)有一定的持續(xù)時(shí)間。
}
}
}
//自己耗費(fèi)1天半的嘔心瀝血之作,希望對(duì)你有用!
求救c語(yǔ)言 如果要檢測(cè)兩個(gè)鍵同時(shí)被按下和松手檢測(cè)的,要怎么樣寫(xiě)呢?
C語(yǔ)言 用getch() 可以即時(shí)獲得按鍵的鍵值。
如果按下一個(gè)鍵,手不移動(dòng),根據(jù)你的鍵盤(pán)設(shè)置(按鍵時(shí)間長(zhǎng)于多少則為新的按鍵),getch()會(huì)連續(xù)獲得鍵值。
組合鍵將輸出組合鍵的鍵值。
某些鍵,按一次會(huì)有2個(gè)鍵值,例如 F1,F2...F12, 上下左右箭頭鍵。
Windows 和MFC c++ 程序 可以或的 各種復(fù)雜的按鍵“事件”,按著,抬起,按下抬起,你可以測(cè)時(shí)間間隔,時(shí)間延時(shí),可以寫(xiě)很嚕蘇的程序。
#includestdlib.h
#includestdio.h
void main()
{
int i;
int key,key2;
// 普通鍵用 getch();取得
key = getch();
printf("\nkey value = 0x%02x -- %d\n",key,key);
key = getch();
printf("\nkey value = 0x%02x -- %d\n",key,key);
key = getch();
printf("\nkey value = 0x%02x -- %d\n",key,key);
key = getch();
printf("\nkey value = 0x%02x -- %d\n",key,key);
// 箭頭鍵
if (key == 0xe0) {
key = getch();
printf("\nkey value = %02x -- %d\n",key,key);
};
// F1鍵
if (key == 0) {
key2 = getch();
printf("\nkey value = %02x\n",key2);
switch (key2) {
case 0x003b: printf("F1 key");break;
case 0x003c: printf("F2 key");break;
case 0x003d: printf("F3 key");break;
case 0x003e: printf("F4 key");break;
case 0x003f: printf("F5 key");break;
case 0x0040: printf("F6 key");break;
case 0x0041: printf("F7 key");break;
default: break;
};
};
}
C語(yǔ)言中g(shù)etkey ,getch,flush這些函數(shù)是什么意思?應(yīng)該如何使用? 謝謝
getkey()應(yīng)該是得到鍵值的函數(shù),C語(yǔ)言里有這個(gè)函數(shù)嗎?我怎么沒(méi)見(jiàn)過(guò)(在下又孤陋寡聞了,汗,,,)我覺(jué)得需要自己定義一個(gè)吧,不知道LZ在哪兒看見(jiàn)的,先不廢話了,getch()是從鍵盤(pán)得到一個(gè)字符,用法如:。。。char ch;getch(ch);//OR ch=geych();。。?!,F(xiàn)在很多編譯器不承認(rèn)這個(gè)函數(shù)了,最好寫(xiě)成getchar(),用法沒(méi)變;flush()是刷新屏幕用的吧,或者是刷新緩存,,,哦,忘了,,自汗,,,希望可以幫到LZ
C語(yǔ)言 如何在一段時(shí)間內(nèi)檢測(cè)鍵盤(pán)是否按下
#include bios.h
#include stdio.h
main()
{
int key;
for(;;)
{
if (bioskey(1)) /*有鍵按下,讀取鍵值*/
key=bioskey(0);
else /*無(wú)鍵按下,返回0*/
key=0;
switch(key)
{case 0: ...../*無(wú)按鍵,執(zhí)行該操作*/
case 0xXXXXH:..../*不同鍵值,做不同處理*/
。。。。。
}
}
}
該程序段功能:
判斷是否有鍵按下,若有進(jìn)行不同操作,若無(wú)進(jìn)行其他操作。
相關(guān)原理:
函數(shù)名: bioskey
功 能: 直接使用BIOS服務(wù)的鍵盤(pán)接口
函數(shù)原型:int bioskey (int cmd)
說(shuō)明:bioskey()的函數(shù)原型在bios.h中
bioskey()完成直接鍵盤(pán)操作,cmd的值決定執(zhí)行什么操作。
cmd = 1:
當(dāng)cmd是1,bioskey()查詢是否按下一個(gè)鍵,若按下一個(gè)鍵則返回非零值,否則返回0。
鍵盤(pán)有按鍵時(shí),會(huì)把鍵值(掃描碼)存入緩沖區(qū),當(dāng)需要判斷是否有鍵按下時(shí),掃描緩沖區(qū),為空則無(wú)鍵按下,不為空則有鍵按下。注意:該功能并不清空緩沖區(qū)。
cmd = 0:
當(dāng)cmd是0,bioskey()返回鍵盤(pán)鍵入的值。它返回一個(gè)16位的二進(jìn)制數(shù),包括兩個(gè)不同的值。當(dāng)按下一個(gè)普通鍵時(shí),它的低8位數(shù)存放該字符的ASCII碼,高8位存放該鍵的掃描碼;對(duì)于特殊鍵(如方向鍵、F1~F12等等),低8位為0,高8位字節(jié)存放該鍵的掃描碼。
其操作步驟為:
1.檢測(cè)緩沖區(qū)是否有數(shù)據(jù);
2.沒(méi)有則繼續(xù)第一步;
3.讀取緩沖區(qū)第一個(gè)單元中的鍵盤(pán)輸入
4.讀取的掃描碼
5.將已讀取的鍵盤(pán)輸入從緩沖區(qū)刪除
C語(yǔ)言?如何在一段時(shí)間內(nèi)檢測(cè)鍵盤(pán)是否按下
C語(yǔ)言實(shí)現(xiàn)的鍵盤(pán)檢測(cè):
/*
檢測(cè)當(dāng)前是否有鍵盤(pán)輸入,并更新鍵值JR_KeyValue
*/
int
JR_AnyKeys(void);
/*
返回鍵值A(chǔ)SCII碼
或
對(duì)應(yīng)自定義鍵值
*/
int
JR_GetKeyNum(void);
/*
檢測(cè)指定鍵是否有按下
*/
int
JR_IsKeyDown(const
int
key);
BUG:在一次檢測(cè)中多次調(diào)用函數(shù)JR_GetKeyNum()就會(huì)出錯(cuò)了。
FIX:把JR_KeyBoard.c文件中的JR_GetKeyNum()函數(shù)里面的第一句“JR_AnyKeys();”注釋掉就可以了。
名稱欄目:c語(yǔ)言檢測(cè)鍵值用哪個(gè)函數(shù) c語(yǔ)言檢測(cè)鍵值用哪個(gè)函數(shù)表示
文章位置:http://www.dlmjj.cn/article/hhchdj.html


咨詢
建站咨詢
