當前位置:首頁 » 編程語言 » c語言的鍵盤說明
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言的鍵盤說明

發布時間: 2023-03-26 04:23:05

Ⅰ 求單片機c語言 鍵盤控制的解釋 求告訴注釋

#include<埋槐reg51.h>
//你用的是51系列的單片機,所以加上頭文或液則件

#define uchar unsigned char
#define uint unsigned int

#define SCANPORT P1
//定義鍵盤掃描的埠P1口衫棚

uchar uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F};
//我覺得這里有錯,應該是{0xEF,0xDF,0xBF,0x7F},原來是{0xFE,0xFD,0xFB,0xF7}

uchar ucKeyScan() //鍵盤掃描函數,看哪個按鍵按下
{
uchar Temp=0;
uchar ucRow=0,ucLine=0; //定義掃描的行和列

for(ucLine=0;ucLine<4;ucLine++)
{
SCANPORT=uca_LineScan[ucLine];
//把0xEF賦值給P1管腳,其含義是取第一行,掃描哪個按鍵按下了。
Temp=SCANPORT & 0x0F;
//屏蔽高四位管腳(這些管腳是行管腳所在的位置),看這行的哪個按鍵按下
if(Temp!=0x0F) //判斷哪個按鍵,並賦給列ucRow一個值
{
switch(Temp) //簡單,不解釋
{
case 0x0E: ucRow=10;break;
case 0x0D: ucRow=20;break;
case 0x0B: ucRow=30;break;
case 0x07: ucRow=40;break;
default: ucRow=50;break;
}
break;
}
}
//循環四次,就是掃描完四行,外成循環是行,裡面判斷這行里哪列的按鍵按下

SCANPORT=0x0F;

return ucRow+ucLine+1;
//返回哪個按鍵按下。如返回12,則意思是2行1列的按鍵按下
//注意:我說的是函數里的行和列,你給的圖看不清楚連線,所以不一定對應你的行和列

}

void vKeyProcess(unsigned char ucKeyCode)//不同按鍵按下,對應不同的操作
{

switch(ucKeyCode)
{
case 11:P2=0xff;P3=0x7f;break; //'7'
case 12:P2=0xff;P3=0x3f;break; //'8'
case 13:P2=0xff;P3=0x1f;break;
case 14:P2=0xff;P3=0x0f;break;

case 21:P2=0xff;P3=0x07;break; //'4'
case 22:P2=0xff;P3=0x03;break; //'5'
case 23:P2=0xff;P3=0x01;break;
case 24:P2=0xff;P3=0x00;break;

case 31:P3=0x00;P2=0x7f;break; //'1'
case 32:P3=0x00;P2=0x3f;break; //'2'
case 33:P3=0x00;P2=0x1f;break;
case 34:P3=0x00;P2=0x0f;break;

case 41:P3=0x00;P2=0x07;break; //'3'
case 42:P3=0x00;P2=0x03;break;
case 43:P3=0x00;P2=0x01;break; //'0'
case 44:P3=0x00;P2=0x00;break; //'+'

default:break;
}
}
void main()
{
while(1)
{
vKeyProcess(ucKeyScan());
}
}
小弟出道未久,不足之處,還請各位大蝦指教一二

Ⅱ c語言中從鍵盤輸入數據的規律和容易出錯的地方

以下為你收集的c語言輸入數據要點及注意事項

說明: (1)數據輸入是相對計算機內存
(2) 數據輸入使用標准庫函數完成
(3) 數據輸入標准庫函數的原型聲明在stdio.h頭文件中
1、函數getchar函數的功能是從鍵盤上輸入一個字元。
其一般形式為:字元變數=getchar();

getchar函數只能接受單個字元,輸入數字也按字元處理。
輸入多餘的字元存入到鍵盤的緩沖區,若有下一個getchar函數語句,直接從鍵盤的緩沖區讀取。
2、字元串輸入函數gets 格式:
gets (st)
功能:從鍵盤上輸入一個字元串,本函數得到一個函數值,即為該字元數組的首地址。
注意:gets函數並不以空格作為字元串輸入結束的標志,而只以回車作為輸入結束。這是與scanf(「%s」,…)函數不同的。
3、scanf()函數的一般形式
scanf(「格式控制字元串」,地址列表);

地址列表,用來接受數據各變數的地址。

變數的地址表示如下: & 變數名 ,別忘了取地址運算&

其格式字元串的一般形式為:
%[*][輸入數據寬度][長度]類型字元
其中有方括弧[]的項為任選項。各項的意義如下:
1) 類型字元
表示輸入數據的類型,其格式符和意義如下所示:
d 輸入十進制整數
o 輸入八進制整數
x 輸入十六進制整數
u 輸入無符號十進制整數
f或e 輸入實型數(用小數形式或指數形式)
c 輸入單個字元
s 輸入字元串

2) 「*」符
用以表示該輸入項讀入後不賦予相應的變數,跳過該輸入值。
如 scanf("%d %*d %d",&a,&b);
輸入為:1 2 3 把1賦予a,2被跳過,3賦予b。
3)寬度
用十進制整數指定輸入的寬度(即字元數)。
例如: scanf("%5d",&a);
輸入: 12345678
只把12345賦予變數a,其餘部分被截去。
又如: scanf("%4d%4d",&a,&b);
輸入:12345678將把1234賦予a,而把5678賦予b。
4)長度 長度格式符為l和h,l表示輸入長整型數據(如%ld)和雙精度浮點數(如%lf)。h表示輸入短整型數據。
例如:
main()
{ inta;
long b;
double x;
scanf(「%d%ld%lf」,&a,&b,&x);
printf(「a=%d, b= %ld,x=%lf」,a,b,x);
}
使用scanf函數還必須注意以下幾點:
(1)scanf函數中沒有精度控制。
如:scanf(「%5.2f」,&a); 是非法的。
(2)scanf中要求給出變數地址,
如: scanf(「%d」,a);是非法的。
(3)在輸入多個數值數據時,若格式控制串中沒有非格式字元作輸入數據之間的間隔則可用空格,TAB或回車作間隔。
例如:scanf(「%d%d」,&a,&b);
輸入: 12 10 回車
或 12 回車 10 回車
(4)在輸入字元數據時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。
例如:
scanf("%c%c%c",&a,&b,&c);
輸入為:d e f 則把'd'賦予a, 『』'賦予b,'e'賦予c。
只有當輸入為: def時,把'd'賦於a,'e'賦予b,'f'賦予c。
如果在格式控制中加入空格作為間隔,
如 scanf ("%c %c %c",&a,&b,&c);
輸入時各數據之間可加空格。
(5)如果格式控制串中有非格式字元則輸入時也要輸入該非格式字元。
例如:
scanf("%d,%d,%d",&a,&b,&c);
其中用非格式符「,」作間隔符,故輸入時應為: 5,6,7
又如:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
則輸入應為: a=5,b=6,c=7
(6)如輸入的數據與輸出的類型不一致時,雖然編譯能夠通過,但結果可能不正確。
void main()
{ inta;
printf("inputa number\n");
scanf("%d",&a);
printf("%ld",a);
}
以上總結比較全面,希望能幫到你。

Ⅲ c語言各個按鍵的鍵值是什麼

,用它可以獲得鍵盤上按鍵的鍵值,獲得鍵值之後,把它們記住,或者用宏定義,就可以為以後的 判斷語句使用,
for example:
#include<stdio.h>

void main(void)
{
int key=0;
clrscr();

while(key != 0x11b) /*0x11b就是ESC鍵的鍵值,用它來判斷結束,這是我事先知道的,方法是一樣的*/
{
key = bioskey(0);
printf("%x ",key);/*把獲得的鍵值用16進制顯示*/
}
}

Ⅳ c語言怎樣實現鍵盤操作

1.在Microsoft Windows 中,鍵盤和滑鼠是兩個標準的用戶輸入源,在一些交疊的操作中通常相互補充使用。當然,滑鼠在今天的應用程序中比10年前使用得更為廣泛。甚至在一些應用程序中,我們更習慣於使用滑鼠,例如在游戲、畫圖程序、音樂程序,以及Web創覽器等程序中就是這樣。然而,我們可以不使用滑鼠,但絕對不能從一般的PC中拆掉鍵盤。
Windows程序獲得鍵盤輸入的方式:鍵盤輸入以消息的形式傳遞給程序的窗口過程。實際上,第一次學習消息時,鍵盤就是一個明顯的例子:消息應該傳遞給應用程序的信息類型。
Windows用8種不同的消息來傳遞不同的鍵盤事件。這好像太多了,但是(就像我們所看到的一樣)程序可以忽略其中至少一半的消息而不會有任何問題。並且,在大多數情況下,這些消息中包含的鍵盤信息會多於程序所需要的。處理鍵盤的部分工作就是識別出哪些消息是重要的,哪些是不重要的。
2.鍵盤基礎知識
雖然應用程序在很多情況下可以通過滑鼠實現信息的輸入,但到現在為止鍵盤仍然是PC機中不可替代的重要輸入設備。
用鍵盤當作輸入設備,每當用戶按下或釋放某一個鍵時,會產生一個中斷,該中斷激活鍵盤驅動程序KEYBOARD.DRV來對鍵盤中斷進行處理。 KEYBOARD.DRV程序會根據用戶的不同操作進行編碼,然後調用Windows用戶模塊USER.EXE生成鍵盤消息,並將該消息發送到消息隊列中等候處理。
1.掃描碼和虛擬碼
掃描碼對應著鍵盤上的不同鍵,每一個鍵被按下或釋放時,都會產生一個唯一的掃描碼作為本身的標識。掃描碼依賴於具體的硬體設備,即當相同的鍵被按下或釋放時,在不同的機器上可能產生不同的掃描碼。在程序中通常使用由Windows系統定義的與具體設備無關的虛擬碼。在擊鍵產生掃描碼的同時,鍵盤驅動程序KEYBOARD.DRV截取鍵的掃描碼,然後將其翻譯成對應的虛擬碼,再將掃描碼和虛擬碼一齊編碼形成鍵盤消息。所以,最後發送到消息隊列的鍵盤消息中,既包含了掃描碼又包含了虛擬碼。
經常使用的虛擬碼在WINDOWS.H文件中定義,常用虛擬碼的數值、常量符號和含義如表所示。

取值(16進制) 常量符號 含義
01 VK_LBUTTON 滑鼠左鍵
02 VK_RBUTTON 滑鼠右鍵
03 VK_CANCEL Break中斷鍵
04 VK_MBUTTON 滑鼠中鍵
05-07 -- 未定義
08 VK_BACK (BackSpace)鍵
09 VK_TAB Tab鍵
0A-0B -- 未定義
0C VK_CLEAR Clear鍵
0D VK_RETURN Enter鍵
0E-0F -- 未定義
10 VK_SHIFT Shift鍵
11 VK_CONTROL Ctrl鍵
12 VK_MENU Alt鍵
13 VK_PAUSE Pause鍵
14 VK_CAPTIAL CapsLock鍵
15-19 -- 漢字系統保留
1A -- 未定義
1B VK_ESCAPE Esc鍵
1C-1F -- 漢字系統保留
20 VK_SPACE 空格鍵
21 VK_PRIOR PageUp鍵
22 VK_NEXT PageDown鍵
23 VK_END End鍵
24 VK_HOME Home鍵
25 VK_LEFT ←(Left Arrow)鍵
26 VK_UP ↑(Up Arrow)鍵
27 VK_RIGHT →(Right Arrow)鍵
28 VK_DOWN ↓(Down Arrow)鍵
29 VK_SELECT Select鍵
2A -- OEM保留
2B VK_EXECUTE Execute鍵
2C VK_SNAPSHOT Print Screen鍵
2D VK_INSERT Insert鍵
2E VK_DELETE Delete鍵
2F VK_HELP Help鍵
30-39 VK_0-VK_9 數字鍵0-9
3A-40 -- 未定義
41-5A VK_A-VK_Z 字母鍵A-Z
5B-5F -- 未定義
60-69 VK_NUMPAD0-VK_NUMPAD9 小鍵盤數字鍵0-9
6A VK_MULTIPLY *(乘號)鍵
6B VK_ADD +(加號)鍵
6C VK_SEPAPATOR 分隔符鍵
6E VK_SUBTRACT -(減號)鍵
6F VK_DECIMAL .(小數點)鍵
70-87 VK_DIVIDE /(除號)鍵
88-8F VK_F1-VK_F24 F1-F24功能鍵
90 VK_NUMBERLOCK Number lock鍵
91 VK_SCROLL Scroll lock鍵
92-B9 -- 未定義
BA-C0 -- OEM保留
C1-DA -- 未定義
DB_E4 -- OEM保留
E5 -- 未定義
E6 -- OEM保留
E7-E8 -- 未定義
E9-F5 -- OEM保留
F6-FE -- 未定義

2.輸入焦點
同一時刻,Windows中可能有多個不同的程序在運行,也就是說有多個窗口同時存在。這時,鍵盤由多個窗口共享,但只有一個窗口能夠接收到鍵盤消息,這個能夠接收鍵盤消息的窗口被稱為擁有輸入焦點的窗口。
擁有輸入焦點的窗口應該是當前的活動窗口,或者是活動窗口的子窗口,其標題和邊框會以高亮度顯示,以區別於其他窗口。擁有輸入焦點的也可以是圖標而不是窗口,此時,Windows也將消息發送給圖標,只是消息的格式略有不同。
窗口過程可以通過發送WM_SETFOCUS和 WM_KILLFOCUS消息使窗體獲得或失去輸入焦點。程序也可以通過捕獲WM_SETFOCUS和WM_KILLFOCUS消息來判斷窗體何時獲得或失去輸入焦點。其中WM_SETFOCUS消息表示窗口正獲得輸入焦點,WM_ KILLFOCUS消息表示窗口正失去輸入焦點。
3.鍵盤消息
鍵盤消息分為系統鍵消息和非系統鍵消息。系統鍵消息是指由Aft鍵和其他鍵組合而產生的按鍵消息。當系統鍵被按下時產生WM_ SYSKEYDOWN消息,當系統鍵被釋放時產生WM_SYSKEYUP消息。 Aft鍵與其他鍵形成的組合鍵通常用於對程序菜單和系統菜單進行選擇,或用於在不同的程序之間進行切換。因此,系統鍵消息應該交由Windows進行處理,用戶所編制的程序一般不處理系統鍵消息,而是將這些消息交由DefWindowProc函數進行處理。如果用戶想對系統鍵消息進行處理,應該在處理完這些消息後,再將其發送給DefWindowProc函數,使得Windows系統能夠正常工作。
某些擊鍵消息可以被轉換成字元消息,例如字母鍵、數字鍵等。而有些鍵只能產生按鍵消息而沒有字元消息,例如 Shift鍵、Insert鍵等。消息循環中的 TranslateMessage函數可以實現從擊鍵消息向字元消息的轉化。當GetMessage函數捕獲一個WM_SYSKEYDOWN消息或 WM_KEYDOWN消息後,TranslateMessage函數判斷產生該消息的鍵是否能夠被轉換成字元消息,如果能,就將該消息轉換成字元消息,再通過DispatchMessape函數將轉換後的字元消息發送到消息隊列中去。字元消息共有以下四種,如表所示。

字元 系統字元 非系統字元
普通字元 WM_SYSCHAR WM_CHAR
死字元 WM_SYSDEADCHAR WM_DEADCHAR

其中死字元是由某些特殊鍵盤上的按鍵所造成的,Windows一般忽略死字元所產生的消息。
Windows的消息一般是通過一個MSG結構體變數傳送給消息處理函數的。對於鍵盤消息, MSG結構體變數的各個域中較重要的是lParam域和 wParam域。wParam域用於保存按鍵的虛擬鍵代碼或字元的ASCII碼。對於非字元消息,wParam域保存按鍵的虛擬健代碼;對於字元消息, wParam域不保存字元的ASCII碼。lParam域則用於保存擊鍵時產生的附加信息,實際上一個32位的lParam變數被分為六部分,記錄了以下相關信息:重復次數、OEM掃描碼、擴展鍵標志、關聯鍵標志、前一擊鍵狀態和轉換狀態。lParam域各位的含義如表所示。

位數 含義
0-15 擊鍵重復次數累加
16-23 OEM掃描碼
24 是否為擴展鍵
25-28 未定義
29 是否便用關聯鍵,及Alt鍵是否同時按下。
30 前一次擊鍵狀態,0表示該鍵前一次狀態為抬起,1表示前一次狀態為按下
31 轉換狀態

按鍵的次序不同,產生的消息也不相同。例如,按下並釋放1鍵,讀過程依次產生如表所示三條消息。按下1鍵所產生的消息和wParam的取值

消息 wParam變數取值
WM_KEYDOWN 虛擬碼1
WM_CHAR ASCII碼「1」
WM_KEYUP 虛擬碼1

如果按下Shift鍵後再按下1鍵並釋放,則依次產生如表所示的消息。按下 Shift鍵後按 1健所產生的消息和 wParam的取值

消息 wParam變數取值
WM_KEYDOWN 虛擬碼 VK_SHIFT
WM_KEYDOWN 虛擬碼 VK_1
WM_CHAR ASCII碼「1」
WM_KEYUP 虛擬碼 VK_1
WM_KEYUP 虛擬碼 VK_SHIF

鍵盤應用實例
下面通過一個應用程序實例來說明在實際編程中如何處理鍵盤消息。

#include <windows.h>
#include <stdio.h>
// 全局變數
RECT rc; //記錄滾屏的矩形區域
int xChar, yChar; //文本輸入點坐標
WNDCLASSEX wnd; //窗口類結構變數
char szAppName[] = "鍵盤消息監視程序"; //窗口類名
//函數聲明
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE hInstance,int iCmdShow);
//函數:WinMain
//作用:入口函數
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow)
{
MSG msg;
if(!MyRegisterClass(hInstance))
{
return FALSE;
}

if(!InitInstance(hInstance,iCmdShow))
{
return FALSE;
}

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;
}
//函數:ShowKey
//作用:實現在窗口中顯示按鍵信息
void ShowKey (HWND hwnd, int iType,char *szMessage,WPARAM wParam,LPARAM lParam)
{
static char *szFormat[2] ={"%-14s %3d %c %6u %4d %5s %5s %6s %6s",
"%-14s %3d %c %6u %4d %5s %5s %6s %6s" };
char szBuffer[80];
HDC hdc;
ScrollWindowEx(hwnd, 0, -yChar, &rc,&rc,NULL,NULL,SW_INVALIDATE);
hdc = GetDC (hwnd);
SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT));
TextOut (hdc,
xChar,
rc.bottom - yChar,
szBuffer,
wsprintf szBuffer,
szFormat[iType],
szMessage, //消息
wParam, //虛擬鍵代碼
(BYTE) (iType ? wParam :『 』),//顯示字元值
LOWORD (lParam), // 重復次數
HIWORD (lParam) & 0xFF, // OEM鍵盤掃描碼
//判斷是否為增強鍵盤的擴展鍵
(PSTR) (0x01000000 & lParam ? 「是」 : 「否」),
//判斷是否同時使用了ALT鍵
(PSTR) (0x20000000 & lParam ? 「是」 : 「否」),
(PSTR) (0x40000000 & lParam ? 「按下」 : 「抬」),
//判斷前一次擊鍵狀
(PSTR)(0x80000000 & lParam ? 「按下」 : 「抬起」))
//判斷轉換狀態?
);
ReleaseDC (hwnd, hdc); ?
ValidateRect (hwnd, NULL); ?
}
//函數:WndProc
//作用:處理主窗口的消息
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static char szTop[] ="消息鍵 字元 重復數 掃描碼 擴展碼 ALT 前一狀態 轉換狀態";
static char szUnd[] ="_______ __ ____ _____ ______ ______ ___ _______ ______";
//在窗口中輸出文字作為信息標題
HDC hdc;
PAINTSTRUCT ps;
TEXTMETRIC tm;
switch (iMsg)
{
case WM_CREATE://處理窗口創建的消息
hdc = GetDC (hwnd); //設定字體
SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)); //檢取當前字體的度量數據
GetTextMetrics (hdc, &tm);
xChar = tm.tmAveCharWidth;//保存字體平均寬度
yChar = tm.tmHeight; //保存字體高度
ReleaseDC (hwnd, hdc);
rc.top = 3 * yChar / 2;
return 0;
case WM_SIZE://處理窗口大小改變的消息
//窗體改變後保存新的滾屏區域右下角坐標
rc.right = LOWORD (lParam);
rc.bottom = HIWORD (lParam);
UpdateWindow (hwnd);
return 0;
case WM_PAINT: //處理窗口重繪消息
InvalidateRect (hwnd, NULL, TRUE);
hdc = BeginPaint (hwnd, &ps);
SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;
SetBkMode (hdc, TRANSPARENT) ;
TextOut (hdc, xChar, yChar / 2, szTop, (sizeof szTop) - 1) ;
TextOut (hdc, xChar, yChar / 2, szUnd, (sizeof szUnd) - 1) ;
EndPaint (hwnd, &ps);
return 0;
case WM_KEYDOWN:
//處理鍵盤上某一鍵按下的消息
ShowKey (hwnd, 0, "WM_KEYDOWN",wParam, lParam);
return 0;
case WM_KEYUP:
//處理鍵盤上某一按下鍵被釋放的消息
ShowKey (hwnd, 0, "WM_KEYUP", wParam, lParam);
return 0;
case WM_CHAR:
//處理擊鍵過程中產生的非系統鍵的可見字元消息
howKey (hwnd, 1, "WM_CHAR", wParam, lParam);
return 0;
case WM_DEADCHAR:
//處理擊鍵過程中產生的非系統鍵"死字元"消息
ShowKey (hwnd, 1, "WM_DEADCHAR", wParam, lParam);
return 0;
case WM_SYSKEYDOWN:
//處理系統鍵按下的消息
ShowKey (hwnd, 0, "WM_SYSKEYDOWN",wParam, lParam);
break;
case WM_SYSKEYUP:
//處理系統鍵抬起的消息
ShowKey (hwnd, 0, "WM_SYSKEYUP", wParam, lParam);
break;
case WM_SYSCHAR://處理系統鍵可見字元消息
ShowKey (hwnd, 1, "WM_SYSCHAR", wParam, lParam);
break;
case WM_SYSDEADCHAR://處理系統鍵"死字元"消息
ShowKey (hwnd, 1, "WM_SYSDEADCHAR", wParam, lParam);
break;
case WM_DESTROY:
//處理結束應用程序的消息
PostQuitMessage (0);
return 0;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam);
}
//函數:MyRegisterClass
//作用:注冊窗口類
BOOL MyRegisterClass(HINSTANCE hInstance)
{
wnd.cbSize= sizeof (wnd);
wnd.style = CS_HREDRAW | CS_VREDRAW;
wnd.lpfnWndProc = WndProc;
wnd.cbClsExtra = 0;
wnd.cbWndExtra = 0;
wnd.hInstance = hInstance;
wnd.hIcon = LoadIcon (NULL, IDI_APPLICATION);?
wnd.hCursor = LoadCursor (NULL, IDC_ARROW);
wnd.hbrBackground = (HBRUSH)
GetStockObject (WHITE_BRUSH);
wnd.lpszMenuName = NULL;
wnd.lpszClassName = szAppName;
wnd.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
return RegisterClassEx (&wnd);
}
//函數:InitInstance
//作用:創建主窗口
BOOL InitInstance(HINSTANCE hInstance,int iCmdShow)
{
HWND hwnd;
hwnd = CreateWindow (szAppName,
"鍵盤消息監視程序",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL
);
if(!hwnd)
{
return FALSE;
}
ShowWindow (hwnd, iCmdShow);
UpdateWindow (hwnd);
return TRUE;
}

Ⅳ 求教C語言的鍵盤操作

利用key.h實現,你利用鍵盤輸入,接受到的鍵盤數據用switch就可以實現了,調用相應的操作函數就可以了,例子很多的,你可以看一下那些貪食蛇,俄羅斯方塊了等代碼,推薦你先看貪食蛇,比較簡單,不會就自己查網路,因為書上一般情況下不給你講這些,應該用tc吧,支持圖形

Ⅵ c語言鍵盤輸入空格

C語言中,可以用gets函數來接收輸入的字元串(包含空格)。


格式:gets(字元數組名);

功能:gets函數用於將輸入的字元串內容存放到指定的字元數組中,輸入結尾的換行符' '被換成''存儲在該數組中。


舉例說明如下:

charstr[20];//定義一個字元數組,大小為20個位元組
gets(str);//將用戶輸入的字元串(可以包含空格)存儲到字元數組str中,以回車結束輸入
printf("%s",str);//輸出用戶輸入的字元串(包含空格)

註:使用gets函數時,需將頭文件#include<stdio.h>包含到源文件中。

Ⅶ C語言里tab,esc,回車,這些鍵盤的符號是什麼

"\t"表示tab,「\r」被稱為回車符,只回車,不換行,「\n 」回車加換行,我只知道esc相應的ASCII碼值是27,具體符號表示不清楚,退出的表示有:break、goto、exit

Ⅷ C語言中的鍵盤輸入函數。。。

k=k&0xff?0x00ff:k>>8;其實就是
if(k&0xff) {
k=0x00ff;
}else {
k=k>>8;
}的簡寫。
其實0xff和0x00ff是一樣的,都表示同一個十六進制的值。
書上這么寫,沒有錯;至於為什麼,就不好說了。
可能是讓你多學點知識,也可能是現在很多書其實在編寫時並不是很認真的。畢竟盡信書不如無書!
後面的k>>8是把0xff的值右移8位,達到計算的目的(具體什麼目的要看具體內容)

Ⅸ c語言操作文本的基本使用方法

c語言操作文本應該怎麼使用,這對於很多新手來說,是很難的一件事情,下面我為大家帶來了關於c語言操作文本的基本使用方法,歡迎大家閱讀!

c語言操作文本的基本使用方法

1.字元讀寫:

fgetc函數的功能是從指定的文件中讀一個字元,函數調用的形式為:

字元變數=fgetc(文件指針);

fputc函數的功能是把一個字元寫入指定的文件中,函數調用的形式為:

fputc(字元量,文件指針);

2.字元串讀寫

讀字元串函數fgets

函數的功能是從指定的文件中讀一個字元串到字元數組中,函數調用的形式為:

fgets(字元數組名,n,文件指針);

寫字元串函數fputs

fputs函數的功能是向指定的文件寫入一個字元串,其調用形式為:

fputs(字元串,文件指針);

3.數據塊讀寫

讀數據塊函數調用的一般形式為:

fread(buffer,size,count,fp);

寫數據塊函數調用的`一般形式為:

fwrite(buffer,size,count,fp);

4.格式化讀寫

fscanf函數,fprintf函數與前面使用的scanf和printf函數的功能相似,都是格式化讀寫函數。兩者的區別在於fscanf函數和fprintf函數的讀寫對象不是鍵盤和顯示器,而是磁碟文件。

這兩個函數的調用格式為:

fscanf(文件指針,格式字元串,輸入表列);

fprintf(文件指針,格式字元串,輸出表列);

文件定位

移動文件內部位置指針的函數主要有兩個,即rewind函數和fseek函數。

rewind函數前面已多次使用過,其調用形式為:

rewind(文件指針);

它的功能是把文件內部的位置指針移到文件首。

下面主要介紹fseek函數。fseek函數用來移動文件內部位置指針,其調用形式為:

fseek(文件指針,位移量,起始點);

其中:

「文件指針」指向被移動的文件。

「位移量」表示移動的位元組數,要求位移量是long型數據,以便在文件長度大於64KB時不會出錯。當用常量表示位移量時,要求加後綴「L」。

「起始點」表示從何處開始計算位移量,規定的起始點有三種:文件首,當前位置和文件尾。其表示方法如下表。

c語言操作文本的基本使用方法1

起始點表示符號數字表示

文件首SEEK_SET0

當前位置SEEK_CUR1

文件末尾SEEK_END2

例如:

fseek(fp,100L,0);

其意義是把位置指針移到離文件首100個位元組處。

還要說明的是fseek函數一般用於二進制文件。在文本文件中由於要進行轉換,故往往計算的位置會出現錯誤。

c語言中常用的文件檢測函數有以下幾個。

文件結束檢測函數feof函數

調用格式:

feof(文件指針);

功能:判斷文件是否處於文件結束位置,如文件結束,則返回值為1,否則為0。

讀寫文件出錯檢測函數

ferror函數調用格式:

ferror(文件指針);

功能:檢查文件在用各種輸入輸出函數進行讀寫時是否出錯。如ferror返回值為0表示未出錯,否則表示有錯。

文件出錯標志和文件結束標志置0函數

clearerr函數調用格式:

clearerr(文件指針);

功能:本函數用於清除出錯標志和文件結束標志,使它們為0值。


Ⅹ c語言鍵盤按鍵觸發怎麼表示

可以用FlexibleButton表示。

FlexibleButton 是一個基於標准 C 語言的小巧靈活的按鍵處理庫,支持單擊、連擊、短按、長按、自動消抖,可以自由設置組合按鍵,可用於中斷和低功耗場景。

該按鍵庫解耦了具體的按鍵硬體結構,理論上支持輕觸按鍵與自鎖按鍵,並可以無限擴展按鍵數量。另外,FlexibleButton 使用掃描的方式一次性讀取所有所有的按鍵狀態,然後通過事件回調機制上報按鍵事件。

核心的按鍵掃描代碼僅有三行,沒錯,就是經典的 三行按鍵掃描演算法。使用 C 語言標准庫 API 編寫,也使得該按鍵庫可以無縫兼容任意的處理器平台,並且支持任意 OS 和 non-OS(裸機編程)。

快速體驗:

FlexibleButton 庫中提供了一個測試常式 ./examples/demo_rtt_iotboard.c,該常式基於 RT-Thread OS 進行測試,硬體平台選擇了 RT-Thread IoT Board Pandora v2.51 開發板。

當然你可以選擇使用其他的 OS,或者使用裸機測試,只需要移除 OS 相關的特性即可。

如果你使用自己的硬體平台,只需要將 FlexibleButton 庫源碼和常式加入你既有的工程下即可。

DEMO 程序說明:

該示常式序可以直接在 RT-Thread stm32l475-atk-pandora BSP 中運行,可以在該 BSP 目錄下,使用 menuconfig 獲取本軟體包。