getchar(計算機語言函式)

getchar(計算機語言函式)

本詞條是多義詞,共2個義項
更多義項 ▼ 收起列表 ▲

getchar是讀入函式的一種。它從標準輸入里讀取下一個字元,相當於getc(stdin)。返回類型為int型,為用戶輸入的ASCII碼或EOF。

基本介紹

  • 外文名:getchar
  • 返回值類型:int
  • 返回值:ASCII碼
  • 作用:讀取字元
函式內容,用法,註解,getchar,getch,getche,程式舉例,

函式內容

int getchar(void){    static char buf[BUFSIZ];    static char* bb=buf;    static int n=0;    if(n==0)    {        n=read(0,buf,BUFSIZ);        bb=buf;    }    return (--n>=0)?(unsigned char)*bb++:EOF;}

用法

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

註解

getchar

getchar由宏實現:#define getchar() getc(stdin)。getchar有一個int型的返回值。當程式調用getchar時.程式就等著用戶按鍵。用戶輸入的字元被存放在鍵盤緩衝區中。直到用戶按回車為止(回車字元也放在緩衝區中)。當用戶鍵入回車之後,getchar才開始從stdio流中每次讀入一個字元。getchar函式的返回值是用戶輸入的字元的ASCII碼,若檔案結尾(End-Of-File)則返回-1(EOF),且將用戶輸入的字元回顯到螢幕。如用戶在按回車之前輸入了不止一個字元,其他字元會保留在鍵盤快取區中,等待後續getchar調用讀取。也就是說,後續的getchar調用不會等待用戶按鍵,而直接讀取緩衝區中的字元,直到緩衝區中的字元讀完後,才等待用戶按鍵。

getch

getch與getchar基本功能相同,差別是getch直接從鍵盤獲取鍵值,不等待用戶按回車,只要用戶按一個鍵,getch就立刻返回,getch返回值是用戶輸入的ASCⅡ碼,出錯返回-1。輸入的字元不會回顯在螢幕上.getch函式常用於程式調試中,在調試時,在關鍵位置顯示有關的結果以待查看,然後用getch函式暫停程式運行,當按任意鍵後程式繼續運行。
這個版本忽略了個重點,getch()是非緩衝輸入函式,就是不能用getch()來接受緩衝區已存在的字元,如以下C++程式段,運行時如果輸入1 2 3 a時必須用getchar()才能在後面程式獲得正常輸入,即使先前已經恢複流了,此處用getch()是萬萬不行的。
int i;while(cin>>i);cin.clear();getchar();

getche

這個函式與前兩上類似,功能也相近,都是輸入一個字元,返回值同樣是輸入字元的ASCII碼,但不同的是,此函式在輸入後立即從控制台取字元,不以回車為結束(帶回顯)。

程式舉例

#include<stdio.h>#include<conio.h>main(void){    int c;    int a;    a=getchar();        if (EOF!=a)        printf("%c",a);            while((c=getchar())!='\n')//c接收的值是輸入第一個字元後按下的回車換行符'\n',c是不會顯示的    {        if (EOF==a)            break;        printf("%d",c);    }    getchar();}/*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();當你getchar()前沒有使用回車的話可以用這個函式讓程式調試運行結束後等待編程者按下鍵盤才返回編輯界面,否則將直接返回編輯界面;如:
#include<stdio.h>int main(void){    int i ;    scanf("%d",&i);    getchar();        /*當此處用這個函式時,當你輸入函式並且回車的話將直接以迅雷不及掩耳之勢完成函式的操作*/}
註:當然你也可以使用頭檔案stdlib.h,然後在return 0前加上system("pause"),也可以產生同樣的效果(限Windows)。

相關詞條

熱門詞條

聯絡我們