C++ getchar()的使用方法

1 getchar()簡介ide

getchar()是C語言中的函數,C++中也包含了該函數。getchar()函數的做用是從標準的輸入stdin中讀取字符。函數

也就是說,getchar()函數以字符爲單位對輸入的數據進行讀取。spa

2 getchar()讀取緩衝區方式3d

在控制檯中經過鍵盤輸入數據時,以回車鍵做爲結束標誌。指針

當輸入結束後,鍵盤輸入的數據連同回車鍵一塊兒被輸入到輸入緩衝區中。blog

在程序中第一次調用getchar()函數從輸入緩衝區中讀取一個字節的數據。get

須要注意的是,若是此時在程序中第二次調用getchar()函數,由於此時輸入緩衝區中還有回車鍵的數據沒有被讀出,第二個getchar()函數讀出的是回車符。it

例如以下代碼class

1 char test1 = getchar(); 2 char test2 = getchar();

此時在控制檯中輸入字符「a」而且按下回車鍵,test1的值是字符「a」,而test2的值是「\n」,如圖1所示。test

圖1 test1和test2的值

3 解決方法

能夠使用rewind()函數來清理輸入緩衝區中的數據。該函數的格式爲

void rewind( FILE* stream );

其中,參數stream表示指向FILE結構的指針,即爲指定的流。

該函數的做用是將文件指針移動到文件的起始位置處。

rewind()函數清理指定流中的錯誤指示符以及文件結束指示符。

將「2 getchar()讀取緩衝區方式」中提到的代碼修改成

1 char test1 = getchar(); 2 rewind(stdin); 3 char test2 = getchar(); 4 rewind(stdin);

在控制檯中,首先輸入字符「a」而後按下回車鍵。

getchar()函數從輸入緩衝區中讀取字符「a」,以後調用rewind()函數清理輸入緩衝區中的數據,stdin表示輸入緩衝區的指針;以後再在控制檯中輸入字符「b」,而後按下回車鍵,getchar()函數從輸入緩衝

區中讀取字符「b」,最後再次調用rewind()函數清理輸入緩衝區中的數據。

此時,test1和test2的值如圖2所示。

 

圖2 test1和test2的值

相關文章
相關標籤/搜索