一、函數介紹
1.函數實現:
getchar 由宏實現:#define getchar() getc(stdin)
2.函數返回值:
getchar有一個int型的返回值, 返回值是用戶輸入的第一個字符的ASCII碼,如出錯返回-1,且將用戶輸入的字符回顯到屏幕.
3.函數功能:
當程序調用getchar時.程序就等着用戶按鍵.用戶輸入的字符被存放在鍵盤緩衝區中.直到用戶按回車爲止(回車字符也放在緩衝區中).當用戶鍵入回車之後,getchar纔開始從stdin流中每次讀入一個字符.如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待後續getchar調用讀取.也就是說,後續的getchar調用不會等待用戶按鍵,而直接讀取緩衝區中的字符,直到緩衝區中的字符讀完爲後,纔等待用戶按鍵.
二、與getch()函數比較
getch與getchar基本功能相同,差別是getch直接從鍵盤獲取鍵值,不等待用戶按回車,只要用戶按一個鍵,getch就立刻返回, getch返回值是用戶輸入的ASCII碼,出錯返回-1.輸入的字符不會回顯在屏幕上.getch函數常用於程序調試中,在調試時,在關鍵位置顯示有關的結果以待查看,然後用getch函數暫停程序運行,當按任意鍵後程序繼續運行.
三、函數應用舉例
/*
**從標準輸入讀取字符串,顯示到標準輸出
**
**在每行的後面添加checknum
*/
/************************************************************************/
/* 頭文件 */
/************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char c_ch;
int n_line = 0;
int b_atbegin = 1;
char c_checknum = -1;
while ( (c_ch = getchar()) != EOF)
{
if (1 == b_atbegin)
{
b_atbegin = 0;
++n_line;
printf("line %d:", n_line);
}
if ('\n' == c_ch)
{
printf(" %d", c_checknum);
b_atbegin = 1;
putchar(c_ch);
}
else
{
c_checknum += c_ch;
putchar(c_ch);
}
}
return EXIT_SUCCESS;
}