getchar
函數(shù)名: getchar
功 能: 從stdin流中讀字符
用 法: int getchar(void);
注解:
getchar有一個(gè)int型的返回值,當(dāng)程序調(diào)用getchar時(shí)程序就等著用戶按鍵,用戶輸入的字符被存放在鍵盤緩沖區(qū)中直到用戶按回車為止(回車字符也放在緩沖區(qū)中)。當(dāng)用戶鍵入回車之后,getchar才開始從stdin流中每次讀入一個(gè)字符getchar函數(shù)的返回值是用戶輸入的第一個(gè)字符的ASCII碼,如出錯(cuò)返回-1,且將用戶輸入的字符回顯到屏幕。如用戶在按回車之前輸入了不止一個(gè)字符,其他字符會(huì)保留在鍵盤緩存區(qū)中,等待后續(xù)getchar調(diào)用讀取。也就是說,后續(xù)的getchar調(diào)用不會(huì)等待用戶按鍵,而直接讀取緩沖區(qū)中的字符,直到緩沖區(qū)中的字符讀完為后,才等待用戶按鍵。
getch與getchar基本功能相同,差別是getch直接從鍵盤獲取鍵值,不等待用戶按回車,只要用戶按一個(gè)鍵,getch就立刻返回, getch返回值是用戶輸入的ASCII碼,出錯(cuò)返回-1。輸入的字符不會(huì)回顯在屏幕上。getch函數(shù)常用于程序調(diào)試中,在調(diào)試時(shí),在關(guān)鍵位置顯示有關(guān)的結(jié)果以待查看,然后用getch函數(shù)暫停程序運(yùn)行,當(dāng)按任意鍵后程序繼續(xù)運(yùn)行。
demo:
#include <stdio.h>int main(void){ int c; /* Note that getchar reads from stdin and is line buffered; this means it will not return until you PRess ENTER. */ while ((c = getchar()) != '/n') printf("%c", c); return 0;}注:可以利用getchar()函數(shù)讓程序調(diào)試運(yùn)行結(jié)束后等待編程者按下鍵盤才返回編輯界面,用法:在主函數(shù)結(jié)尾,return 0;之前加上getchar();即可。
getch
所在頭文件:conio.h
函數(shù)用途:從控制臺讀取一個(gè)字符
函數(shù)原型:int getch(void)
返回值:讀取的字符
例如:
char ch;或int ch;
getch();或ch=getch();
用getch();會(huì)等待你按下任意鍵,再繼續(xù)執(zhí)行下面的語句;
用ch=getch();會(huì)等待你按下任意鍵之后,把該鍵字符所對應(yīng)的ASCII碼賦給ch,再執(zhí)行下面的語句。
易錯(cuò)點(diǎn):
1.所在頭文件是conio.h。而不是stdio.h。
2.在使用之前要調(diào)用initscr(),結(jié)束時(shí)要調(diào)用endwin()。否則會(huì)出現(xiàn)不輸入字符這個(gè)函數(shù)
也會(huì)返回的情況。
3.在不同平臺,輸入回車,getch()將返回不同數(shù)值,而getchar()統(tǒng)一返回10(即/n)
1)windows平臺下ENTER鍵會(huì)產(chǎn)生兩個(gè)轉(zhuǎn)義字符 /r/n,因此getch返回13(/r)。
2)unix、 linux系統(tǒng)中ENTER鍵只產(chǎn)生 /n ,因此getch返回10(/n)。
3)MAC OS中ENTER鍵將產(chǎn)生 /r ,因此getch返回13(/r)。
getch();并非標(biāo)準(zhǔn)C中的函數(shù),不存在C語言中。所以在使用的時(shí)候要注意程序的可移植性。國內(nèi)C語言新手常常使用getch();來暫停程序且不知道此函數(shù)來源,建議使用getchar();代替此功能或更換一款編譯器。
新聞熱點(diǎn)
疑難解答
圖片精選