在c語言中,getch()函數用於從stdio流中讀取字符,即從控制台讀取一個字符,但不顯示在屏幕上;語法為:“int getch(void)” ,傳回讀取的字元。
C語言中getch()函數
功能: 從stdio流中讀取字符,即從控制台讀取一個字符,但不顯示在螢幕上
用法:
int getchar(void);
這個函數是一個不回顯函數,當用戶按下某個字符時,函數自動讀取,無需按回車,有的C語言命令列程式會用到此函數做遊戲,但是這個函數並非標準函數,要注意移植性!
Windows下getch()在conio.h
的頭檔中,要使用getch()函數需要引用conio
頭檔。
程式碼:
#include <stdio.h> #include <fcntl.h> #include <stdlib.h> #include <conio.h> #define ESC 0x1B #define ENTER 0x0D #define SPACE 0x20 #define KEY_UP 72 //上 #define KEY_DOWN 80 //下 #define KEY_LEFT 75 //左 #define KEY_RIGHT 77 //右 int KEY_EXIT_STATU = 0 ; int KEY_ENTER_STATU = 0 ; int KEY_SPACE_STATU = 0 ; int KEY_UP_STATU = 0 ; int KEY_DOWN_STATU = 0 ; int KEY_LEFT_STATU = 0 ; int KEY_RIGHT_STATU = 0 ; char ch ; int get_value() ; int main(void) { int i = 0; while(1) { get_value(); } return 0 ; } int get_value() { ch = getch() ; system("cls"); switch(ch) { case ESC : KEY_EXIT_STATU = 1 ; printf("退出\n") ; break ; case ENTER :KEY_ENTER_STATU = 1 ; printf("回车\n") ; break ; case SPACE : KEY_SPACE_STATU = 1 ; printf("空格\n") ; break ; case KEY_UP:case 'w' : KEY_UP_STATU = 1 ; printf("上\n") ; break ; case KEY_DOWN:case 's' : KEY_DOWN_STATU = 1 ; printf("下\n") ; break ; case KEY_LEFT:case 'a' : KEY_LEFT_STATU = 1 ; printf("左\n") ; break ; case KEY_RIGHT:case 'd': KEY_RIGHT_STATU = 1 ; printf("右\n") ; break ; } }
註解:
getchar有一個int型的回傳值.當程式呼叫getchar時.程式就等著使用者按鍵.使用者輸入的字元被存放在鍵盤緩衝區中.直到使用者按回車為止(回車字元也放在緩衝區中).當使用者鍵入回車之後,getchar才開始從stdio流中每次讀入一個字元.
getchar函數的回傳值是使用者輸入的第一個字元的ASCII碼,如出錯返回-1,且將使用者輸入的字元回顯到螢幕.
如使用者在按回車之前輸入了不只一個字元,其他字元會保留在鍵盤快取區中,等待後續getchar調用讀取.
#也就是說,後續的getchar調用不會等待用戶按鍵,而直接讀取緩衝區中的字元,直到緩衝區中的字元讀完為後,才等待使用者按鍵.
getch與getchar基本功能相同,差別是getch直接從鍵盤取得鍵值,不等待使用者按回車,只要使用者按一個鍵,getch就立刻返回, getch回傳值是使用者輸入的ASCII碼,出錯返回-1.輸入的字元不會回顯在螢幕上.
getch函數常用於程式偵錯中,在調試時,在關鍵位置顯示有關的結果以待查看,然後用getch函數暫停程序運行,當按任意鍵後程序繼續運行.
推薦:《c語言教程》
以上是c語言getch()的用法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!