天天看點

getch和getchar的差別

函數名: getch();

功 能: 從控制台無回顯地取一個字元

函數名: getchar();

功 能: 從stdin流中讀字元

函數名: scanf();

功 能: 

    getchar有一個int型的傳回值.當程式調用getchar時.程式就等着使用者按鍵.使用者輸入的字元被存放在鍵盤緩沖區中.直到使用者按回車為止(回車字元也放在緩沖區中).

getchar函數的傳回值是使用者輸入的第一個字元的ASCII碼,如出錯傳回-1,且将使用者輸入的字元回顯到螢幕.   

    如使用者在按回車之前輸入了不止一個字元,其他字元會保留在鍵盤緩存區中(字元包括空格、enter鍵等),等待後續getchar調用讀取.也就是說,後續的getchar調用不會等待使用者按鍵,而直接讀取緩沖區中的字元,直到緩沖區中的字元讀完為後,才等待使用者按鍵.

 getch直接從鍵盤擷取鍵值,不等待使用者按回車,隻要使用者按一個鍵,getch就立刻傳回,getch傳回值是使用者輸入的ASCII碼,出錯傳回-1.輸入的字元不會回顯在螢幕上.

getch函數常用于程式調試中,在調試時,在關鍵位置顯示有關的結果以待檢視,然後用getch函數暫停程式運作,當按任意鍵後程式繼續運作.

scanf()函數和getchar的用法一樣。 這兩個函數都能沖鍵盤緩沖區讀enter 和space鍵。

 getchar在輸入資料時用按回車,而且也把回車也輸入到了鍵盤緩沖區。

 scanf()在輸入資料時用按回車,而且也把回車也輸入到了鍵盤緩沖區。

 getch()在輸入資料時不用按回車,按一個鍵,getch就立刻傳回。

是以為了防止scanf和getchar 讀取不必要的字元。在getchar和scanf前

我們最好先清空鍵盤緩沖區。

rewind(stdin); //C語言 這個函數就是用來清空鍵盤緩沖區的。。

轉自:http://blog.sina.com.cn/s/blog_692df23e0100n5yt.html

getch和getchar的差別

微信公衆号:

<a target="_blank" href="https://yqfile.alicdn.com/img_e00999465d1c2c1b02df587a3ec9c13d.jpg">猿人谷</a>

如果您認為閱讀這篇部落格讓您有些收獲,不妨點選一下右下角的【推薦】

如果您希望與我交流互動,歡迎關注微信公衆号

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接。