用getchar()讀入一個字元,當程式請求從鍵盤輸入時,getchar()函數何時傳回?
int getchar(void);
getchar()從控制台讀取一個字元,并回顯。當程式調用getchar時,程式就等着使用者按鍵。使用者輸入的字元被存放在鍵盤緩沖區中,直到使用者按回車為止(回車字元也放在緩沖區中)。當使用者鍵入回車之後,getchar才開始從stdio流中每次讀入一個字元。getchar函數的傳回值是使用者輸入的第一個字元的ASCII碼,如出錯傳回-1,且将使用者輸入的字元回顯到螢幕。如使用者在按回車之前輸入了不隻一個字元,其他字元會保留在鍵盤緩存區中,等待後續getchar調用讀取。也就是說,後續的getchar調用不會等待使用者按鍵,而直接讀取緩沖區中的字元,直到緩沖區中的字元讀完為後,才等待使用者按鍵。
int main(void)
{
int ch1=getchar();
int ch2=getchar();
int ch3=getchar();
printf("%d %d %d ",ch1,ch2,ch3);
int ch4=getchar();
int ch5=getchar();
int ch6=getchar();
printf("%d %d %d ",ch4,ch5,ch6);
}
運作結果分析:
(1)輸入123456回車,列印出49 50 51 52 53 54
(2)輸入12345回車,列印出49 50 51 52 53 10(10為'\n'的ASCII碼)
(3)輸入123回車,列印出49 50 51 ,程式執行到 int ch5=getchar()等待輸入。再輸入456回車,列印出10 52 53
(4)輸入1回車,程式執行到 int ch3=getchar()等待輸入。再輸入23456回車,列印出49 10 50 51 52 53