scanf 函式的引數輸入型別不匹配問題

2021-07-27 19:40:34 字數 645 閱讀 2154

scanf()函式的引數輸入型別不匹配問題 

這是我在csdn論壇上見到的問題,這個錯誤有時候會讓人莫名其妙。 

#include

main() 

當輸入a 回車 後,會直接跳過下面2個scanf語句,直接輸出為 

123 

t 原因:對於scanf( "%d%c ",&a,&c),scanf語句執行時,首先試圖從緩衝區中讀入乙個%d型別的資料,如果和 

第乙個引數匹配,則繼續從緩衝區中讀取資料和第二個引數進行匹配,依次進行下去,直到匹配完所有的參 

數;如果其中有乙個引數不匹配,那就從這個地方跳出,忽略這個scanf後面所有的引數,而去執行下一條語 

句。 可以用下面的程式驗證一下: 

#include

int main() 

輸入:2 回車a 回車 

結果是: 

2 1 

a 解決方法:scanf()函式執行成功時的返回值是成功讀取的變數數,也就是說,你這個scanf()函式有幾個變數 

,如果scanf()函式全部正常讀取,它就返回幾。但這裡還要注意另乙個問題,如果輸入了非法資料,鍵盤緩 

沖區就可能還個有殘餘資訊問題。 

比如: 

#include

main()  

Scanf的輸入型別

scanf的輸入型別 1.格式字元與printf函式中的使用方式相同,以 d o x c s f e,無 u格式 g格式。2.可以指定輸入資料所佔列寬,系統自動按它擷取所需資料。3.後的 附加說明符,用來表示跳過它相應的資料。4.輸入資料時不能規定精度。5.根據格式字元的含義從輸入流中取得資料,當輸...

scanf 函式讀取型別不匹配問題

一般情況下scanf d num 會讀取乙個字元,如果該字元是數字,它便儲存該數字並讀取下乙個字元,知道遇到第乙個空白字元為止。或者遇到非數字字元,它也會停止讀入,然後scanf 函式把非數字字元放回輸入。這意味著在改程式下一次讀入時,首先讀取到的是上一次丟棄的非數字字元。在linux系統下,如果s...

scanf函式的輸入

是不是也有人和我一樣,有時候輸入達不到自己預想結果呢?又很難找到自己的錯誤,覺得輸入的格式是對的,但是儲存卻不再在自己預想的位置。下面來講一下我關於字元和數字輸入的順序和方式的認識。首先我們來看第乙個 include includevoid main 是不是感覺是乙個非常簡單的程式。但有時候不懂也是...