首先,先來講一下scanf的讀取流程:

從鍵盤輸入的都是字符類型(一系列的字符),scanf()的作用就是將這個字符序列轉(zhuǎn)換成一個或多個指定的類型,并保存到變量中。

從鍵盤輸入的字符序列會先緩存到鍵盤緩沖區(qū)中,當用戶輸入回車,這時會清空鍵盤緩沖區(qū),將鍵盤緩沖區(qū)的數(shù)據(jù)(包括回車)送入到stdin中

這時scanf()開始從stdin中讀取數(shù)據(jù)。

scanf()在讀取每個字段時都會忽略空白符(%c比較特殊)。以%d為例,scanf()會先忽略stdin中的空白符,直到遇到第一個0-9開始讀取,如果后面的字符依然是0-9就繼續(xù)讀取,直到遇到空白符或者非0-9的字符,scanf認為%d的讀取完畢,將讀取的字符序列轉(zhuǎn)換成十進制整型保存到變量中。最后遇到的空白符或非法字符將返回到stdin中去。

如果忽略掉前面的空白符后第一個遇到的是非法的字符(非0-9),比如a,這時a會被返回到stdin中,程序也將會跳出scanf()函數(shù)(不管%d后面是否還存在帶輸入項,如另一個%d,都會跳出整個scanf()函數(shù))。

看一個例子:

Android培訓(xùn),安卓培訓(xùn),手機開發(fā)培訓(xùn),移動
        
        	<div   id=

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓(xùn),做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學習是年輕人改變自己的最好方式