getchar函式語法
(1)函式聲明
int getchar(void)
(2)參數
(3)功能
C 庫函式int getchar(void)從標準輸入 stdin 獲取一個字元(一個無符號字元)。這等同於getc帶有 stdin 作為參數。
(4)返回值
該函式以無符號 char 強制轉換為 int 的形式返回讀取的字元,如果到達檔案末尾或發生讀錯誤,則返回 EOF。
(5)用法
該函式聲明在
stdio.h頭檔案中,使用的時候要包含stdio.h頭檔案。如:
#include<stdio.h>int getchar(void);
函式原理
getchar由宏實現:#define getchar() getc(stdin)。getchar有一個int型的返回值。當程式調用getchar時,程式就等著用戶按鍵。用戶輸入的字元被存放在鍵盤緩衝區中。直到用戶按回車為止。當用戶鍵入回車之後,getchar才開始從stdin流中每次讀入一個字元。getchar函式的返回值是用戶輸入的字元的ASCII碼,若檔案結尾則返回-1(EOF),且將用戶輸入的字元回顯到螢幕。如用戶在按回車之前輸入了不止一個字元,其他字元會保留在鍵盤快取區中,等待後續getchar調用讀取。也就是說,後續的getchar調用不會等待用戶按鍵,而直接讀取緩衝區中的字元,直到緩衝區中的字元讀完後,才等待用戶按鍵。
功能比較
getch與getchar基本功能相同,差別是getch直接從鍵盤獲取鍵值,不等待用戶按回車,只要用戶按一個鍵,getch就立刻返回, getch返回值是用戶輸入的ASCII碼,出錯返回-1,輸入的字元不會回顯在螢幕上。getch函式常用於程式調試中,在調試時,在關鍵位置顯示有關的結果以待查看,然後用getch函式暫停程式運行,當按任意鍵後程式繼續運行。
程式示例
示例1
#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()函式讓程式調試運行結束後等待編程者按下鍵盤才返回編輯界面,用法:在主函式結尾,return 0;之前加上getchar();
示例2
#include <stdio.h>
int main()
{
char a,b;
a=getchar();
b=getchar();
putchar(a);
putchar(b);
return 0;
}
我們輸入x-回車-y-回車
結果會是xy嗎?不是的 結果是a=x b='\n'(回車)
當我們開始打x的時候,x在緩衝區,當我們按下回車的時候,第一個getchar()才獲取到x這個值 順利存到a里 但回車既是確定又是字元,回車'\n'它也跟著進了緩衝區,並且和x一起被釋放,x到了程式里 回車('\n')也到了程式里,並且被第2個 getchar()獲取,此時我們輸入y,這時緩衝區裡有一個字元 'y', 然後我們又按下回車,'y'和'\n'又一起準備被釋放,由於程式里沒有第3個getchar(),所以'y'和'\n'還留在緩衝區,但它們兩個已經是在準備狀態中,如果程式又出現一個getchar(),'y'不需要你按回車它會直接進入到第3個getchar(),getchar()是依次獲取,按先後順序,不會先獲取'\n',而'\n'正等待著馬上進入第4個getchar()。