複製鏈接
請複製以下鏈接發送給好友

getchar()

鎖定
getchar()函數的作用是從計算機終端(一般為鍵盤)獲取一個無符號字符。getchar()函數只能接收一個字符,其函數值就是從輸入設備獲取到的字符。 [1-2] 
中文名
字符輸入函數
外文名
getchar()
功    能
獲取字符
用 法
int getchar(void);
特    點
getch與getchar基本功能相同
應    用
c語言

getchar()getchar函數語法

(1)函數聲明
int getchar(void)
(2)參數
  • NA
(3)功能
C 庫函數int getchar(void)從標準輸入 stdin 獲取一個字符(一個無符號字符)。這等同於getc帶有 stdin 作為參數。
(4)返回值
該函數以無符號 char 強制轉換為 int 的形式返回讀取的字符,如果到達文件末尾或發生讀錯誤,則返回 EOF。
(5)用法
該函數聲明在stdio.h頭文件中,使用的時候要包含stdio.h頭文件。如: [3] 
#include<stdio.h>
int getchar(void);

getchar()函數原理

getchar由宏實現:#define getchar() getc(stdin)。getchar有一個int型的返回值。當程序調用getchar時,程序就等着用户按鍵。用户輸入的字符被存放在鍵盤緩衝區中。直到用户按回車為止。當用户鍵入回車之後,getchar才開始從stdin流中每次讀入一個字符。getchar函數的返回值是用户輸入的字符的ASCII碼,若文件結尾則返回-1(EOF),且將用户輸入的字符回顯到屏幕。如用户在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待後續getchar調用讀取。也就是説,後續的getchar調用不會等待用户按鍵,而直接讀取緩衝區中的字符,直到緩衝區中的字符讀完後,才等待用户按鍵。 [1] 

getchar()功能比較

getch與getchar基本功能相同,差別是getch直接從鍵盤獲取鍵值,不等待用户按回車,只要用户按一個鍵,getch就立刻返回, getch返回值是用户輸入的ASCII碼,出錯返回-1,輸入的字符不會回顯在屏幕上。getch函數常用於程序調試中,在調試時,在關鍵位置顯示有關的結果以待查看,然後用getch函數暫停程序運行,當按任意鍵後程序繼續運行。 [4] 

getchar()程序示例

getchar()示例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();

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()。
參考資料
  • 1.    呂俊,謝旻,張軍強.C語言程序設計教程.南京:南京大學出版社,2014:65
  • 2.    譚浩強 . C程序設計(第4版) :清華大學出版社,2010.6
  • 3.    張權 . Objective-C函數速查實例手冊 :人民郵電出版社,2014.2
  • 4.    陳超 .C語言常用函數速查手冊:化學工業出版社,2010.6