4 回答

TA貢獻1712條經驗 獲得超3個贊
getchar 由宏實現:#define getchar() getc(stdin)。
getchar有一個int型的返回值。當程序調用getchar時,程序就等著用戶按鍵,用戶輸入的字符被存放在鍵盤緩沖區中,直到用戶按回車為止(回車字符也放在緩沖區中)。
當用戶鍵入回車之后,getchar才開始從stdin流中每次讀入一個字符,getchar函數的返回值是用戶輸入的第一個字符的ASCII碼,如出錯返回-1,且將用戶輸入的字符回顯到屏幕。
如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待后續getchar調用讀取。也就是說,后續的getchar調用不會等待用戶按鍵,而直接讀取緩沖區中的字符,直到緩沖區中的字符讀完為后,才等待用戶按鍵。
getchar函數的功能是從鍵盤上輸入一個字符。其一般形式為: getchar();通常把輸入的字符賦予一個字符變量,構成賦值語句,如:
char c;
c=getchar();
#include<stdio.h>
void main()
{
char c;
printf("input a character\n");
c=getchar();
putchar(c);
}
使用getchar函數還應注意幾個問題:
getchar函數只能接受單個字符,輸入數字也按字符處理。輸入多于一個字符時,只接收第一個字符。
使用本函數前必須包含文件“stdio.h”。
在TC屏幕下運行含本函數程序時,將退出TC 屏幕進入用戶屏幕等待用戶輸入,輸入 完畢再返回TC屏幕。

TA貢獻1842條經驗 獲得超21個贊
getchar 由宏實現:#define getchar() 。
getchar(stdin)語句功能:getchar有一個int型的返回值,當程序調用getchar時,程序就等著用戶按鍵,用戶輸入的字符被存放在鍵盤緩沖區中,直到用戶按回車為止(回車字符也放在緩沖區中)。
當用戶鍵入回車之后,getchar才開始從stdin流中每次讀入一個字符,getchar函數的返回值是用戶輸入的第一個字符的ASCII碼。
如出錯返回-1,且將用戶輸入的字符回顯到屏幕,如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待后續getchar調用讀取。
也就是說,后續的getchar調用不會等待用戶按鍵,而直接讀取緩沖區中的字符,直到緩沖區中的字符讀完為后,才等待用戶按鍵。
示例:
#include<stdio.h>
void main()
{
char c;//定義一個字符
printf("input a character\n");
c=getchar(); //從鍵盤獲取一個字符
putchar(c);//輸出字符
}

TA貢獻1820條經驗 獲得超2個贊
getchar();永遠只向緩存中輸入一個字符,
在你舉的例子中(9)步其實只是向緩存中存入的用戶輸入的第一個字母,
正常說是f
但在c中回車符也算個字符
如果沒有(11)
再第二次循環中 (9)步向緩存中遞交的并不是用戶輸入的字符
而是用戶第一次打入的回車符
導致循環停止
getchar();的用法很多;
一種就是你這個程序用到的清空回車符 這種情況一般發生在在循環中涉及到輸入的情況
還有一種是某些編譯平臺(IDE)在運行程序時并沒有在程序運行后給人看結果的時間 這時候 在程序最后加上getchar()就能造成程序的暫停 給程序員度結果的機會

TA貢獻1805條經驗 獲得超9個贊
main()
{
int c;
while((c=getchar())!='\n')
printf("%c",c);
}
這段程序的作用是讀入一個字符后立即輸出, 直到輸入一個“換行”為止(從鍵盤輸入一個字符,如果不是換行符就執行printf,在屏幕輸出); 同時,注意從終端鍵盤向計算機輸入時,是在按 ENTER 鍵以后才將一批數據一起送到內存緩沖區中去的。
使用getchar函數還應注意幾個問題:
getchar函數只能接受單個字符,輸入數字也按字符處理。輸入多于一個字符時,只 接收第一個字符。
使用本函數前必須包含文件“stdio.h”。
在TC屏幕下運行含本函數程序時,將退出TC 屏幕進入用戶屏幕等待用戶輸入。輸入 完畢再返回TC屏幕。
- 4 回答
- 0 關注
- 191 瀏覽
添加回答
舉報