- 論壇徽章:
- 0
|
各位大俠好,
#include "stdio.h"
int main(void)
{
int ch1=getchar();
int ch2=getchar();
int ch3=getchar();
printf("%c%c%c",ch1,ch2,ch3);
return 0;
}
我遇到了以下的情況
我輸入a回車b回車,這樣就結束了,顯示的是a回車b;
getchar有一個int型的返回值.當程序調(diào)用getchar時.程序就等著用戶按鍵.用戶輸入的字符被存放在鍵盤緩沖區(qū)中.直到用戶按回車為止(回車字符也放在緩沖區(qū)中).當用戶鍵入回車之后,getchar才開始從stdio流中每次讀入一個字符.getchar函數(shù)的返回值是用戶輸入的第一個字符的ASCII碼,如出錯返回-1,且將用戶輸入的字符回顯到屏幕.如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區(qū)中,等待后續(xù) getchar調(diào)用讀取.也就是說,后續(xù)的getchar調(diào)用不會等待用戶按鍵,而直接讀取緩沖區(qū)中的字符,直到緩沖區(qū)中的字符讀完為后,才等待用戶按鍵.
如果按上面的解釋的話,我輸入a回車后應該馬上顯示出a回車來,為什么我輸入a回車后,還讓我繼續(xù)等待輸入b回車后才顯示結果出來呢?
還望高手解答一下我的疑惑。謝謝。 |
|