getch,getche,getchar



getchar

編輯本段函數名

getchar

編輯本段功能

從stdio流中讀字符,相當於getc(stdin),它從標準輸入裏讀取下一個字符。

編輯本段用法

該函數聲明在stdio.h頭文件中,使用的時候要包含stdio.h頭文件。如:
#include<stdio.h>
int getchar(void);

編輯本段註解

getchar 由實現:#define getchar() getc(stdin)。getchar有一個int型的返回值.當程序調用getchar時.程序就等着用戶按鍵.用戶輸入的字符被存放在鍵盤緩衝區中.直到用戶按回車爲止(回車字符也放在緩衝區中).當用戶鍵入回車之後,getchar纔開始從stdin流中每次讀入一個字符.getchar函數的返回值是用戶輸入的第一個字符的ASCⅡ碼,如出錯返回-1,且將用戶輸入的字符回顯屏幕.如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待後續getchar調用讀取.也就是說,後續的getchar調用不會等待用戶按鍵,而直接讀取緩衝區中的字符,直到緩衝區中的字符讀完爲後,纔等待用戶按鍵.
getch與getchar基本功能相同,差別是getch直接從鍵盤獲取鍵值,不等待用戶按回車,只要用戶按一個鍵,getch就立刻返回,getch返回值是用戶輸入的ASCⅡ碼,出錯返回-1.輸入的字符不會回顯屏幕上.getch函數常用於程序調試中,在調試時,在關鍵位置顯示有關的結果以待查看,然後用getch函數暫停程序運行,當按任意鍵後程序繼續運行.
這個版本忽略了個重點,getch()是非緩衝輸入函數,就是不能用getch()來接受緩衝區已存在的字符,如以下C++程序,
int i;while(cin>>i);cin.clear();getchar();運行時如果輸入1 2 3 a時必須用getchar()才能在後面程序獲得正常輸入,即使先前已經恢復流了,此處用getch()是萬萬不行的。
另外補充個函數,getche(),這個函數與前兩上類似,功能也相近,都是輸入一個字符,返回值同樣是輸入字符的ASCⅡ碼,但不同的是,此函數在輸入後立即從控制檯取字符,不以回車爲結束(帶回顯)

編輯本段程序例

#include <stdio.h>
#include <conio.h>
int main(void)
{
int c;
int a;
a = getchar();
printf ("%c",a);
while ((c = getchar()) != '\n')//c接收的值是輸入第一個字符後按下的回車換行符'\n',c是不會顯示的
{
printf("%c",c);
}
getchar();
return 0;
}
/*getchar()-Note that getchar reads from stdin and is line buffered; this means it will not return until you press ENTER. */
注:可以利用getchar()函數讓程序調試運行結束後等待編程者按下鍵盤才返回編輯界面,用法:在主函數結尾,return 0;之前加上getchar();即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章