C語言中scanf 輸入與佔位符不匹配的資料

2021-07-05 02:25:07 字數 506 閱讀 7483

在c語言中使用scanf()函式來獲取輸入資料的時候如果輸入資料與佔位符不匹配則會導致之後的scanf()函式都無法正常執行,如

int main() 

while(1)

return

0;}

執行上述**,如果在控制台輸入字母a,則程式會進入死迴圈而不會讓再次讓你輸入新資料。

解決方法:

while (getchar() != '\n')來清空輸入佇列即可,如下:

int main() 

while(1);

return

0;}

必要的時候可以定義乙個巨集:

#define flush while (getchar() !=

'\n')

另外,fflush(stdin)可能也可以達到這個效果,但是這並非標準用法,在c標準中,fflush()只用於輸出流。

C語言中的Scanf輸入函式

1 問題描述 c語言中的scanf函式如果讀取到正確的值,也就是和scanf函式中提前設定的值的型別一致時,該值可以正確被讀入。並且scanf函式的返回值是1,通過對scanf函式的返回值的判斷就可以知道scanf函式是否讀入了正確的值。2 程式 本次使用的編譯器是vscode,測試程式是乙個把華氏...

C語言佔位符 格式佔位符

d,i 代表整數,f 浮點數,s 字串,c char.p 指標,fl 長log,e 科學計數法,g 小數或科學計數法。a,a讀入乙個浮點值 僅c99有效 c讀入乙個字元 d讀入十進位制整數 i讀入十進位制,八進位制,十六進製制整數 o讀入八進位制整數 x,x讀入十六進製制整數 s讀入乙個字串,遇空格...

C語言中scanf函式與輸入緩衝區

樣例 於演算法競賽入門經典第一章實驗部分的內容,經過測試發現scanf函式對於整形資料在讀入時會過濾掉 空格符 換行符 和 水平製表符。按照提示,如果b的值非法,比如說輸入乙個字元 s 那麼會出現什麼結果呢?void scanf buffer void phase 1 輸入的兩個數均為合法的int型...