1,當(dāng)執(zhí)行scanf函數(shù)的時候,并不是直接讓我們從鍵盤中輸入的,而是先檢查緩沖區(qū)中是否有數(shù)據(jù),如果有數(shù)據(jù)才會從緩沖區(qū)中取,如果沒有數(shù)據(jù),才會讓我們輸入.
2,當(dāng)我們輸入數(shù)據(jù)的時候,我們輸入的數(shù)據(jù)并不是直接賦給scanf指定的變量,而是先存儲到我們的緩沖區(qū),scanf函數(shù)再在從緩沖區(qū)取數(shù)據(jù).
3,如果取出的是數(shù)字,整數(shù)或者小數(shù),緩存區(qū)的空格,tab,回車就會自動被忽略,如果要拿的是一個char數(shù)據(jù),他就不會放過任何一個數(shù)據(jù)!
4,這個時候就會造成一個后果,如果緩沖區(qū)中有數(shù)據(jù),而我要接收一個char類型的數(shù)據(jù),它就有可能不會讓我輸入
5,解決方案: 在輸入字符之前,將緩沖區(qū)中的數(shù)據(jù)全部清空.
rewind(stdin);