C语言scanf为啥有时候要输入两次(解析)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                C语言scanf为啥有时候要输入两次(解析)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                C語言scanf為啥有時候要輸入兩次(解析)
我們先看一下這個例子:
 
 我們看上面的圖片,一個scanf()一個格式控制符我們卻輸入了兩次,這是因為我們在scanf()里加入了’ \n ‘。
 簡單地說:如果在格式字符串(出現了空白字符(空格、\n、\t之類),那么 scanf() 會吃掉輸入中所有接下來的空白字符。也就是說,在這段代碼中 scanf 會等到輸入中出現非空白字符才會返回。而scanf()函數的結束是回車,所以我們輸入了 1,回車,2,當輸入2時,空白字符的吃掉效果就消失了這時再回車結束。1因為先進緩沖區, 所以1賦給了a。注意這時候緩沖區有,你輸入的空白符,2。當再次賦值時候scanf()忽略空白符,把有效數字賦值,但如果下一句是 ‘%c’,那么空白符就賦值了,因為’ %c '這個參數只要緩沖區例的第一個字符,無論是啥。
你可能會這樣想,輸入了1,按回車,scanf()中有回車所以回車被吃掉了。其實回車和空格、\t等一些都是空白字符一樣的,并無差異。 你可以輸入 1 空格 2 回車。和上面效果一樣,只要輸入個空白符就行。
 例:
 
 效果和第一張圖是一樣的。
接下來看一張圖
 
 上圖的格式字符串里也有空白字符不過是空格了,我們可以看到它和格式字符串里加\n的效果是一模一樣的。這就更說明了格式字符串里加
 ’ \n’ ,’ \t ’ ,空格等空白字符,它們的效果是一模一樣的。
總結
以上是生活随笔為你收集整理的C语言scanf为啥有时候要输入两次(解析)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: U-Net网络模型(添加通道与空间注意力
- 下一篇: 服务器带宽超出限制如何解决?
