scanf遇空格後繼續輸入

2021-07-22 20:31:39 字數 614 閱讀 3170

如何讓scanf()函式正確接受有空格的字串?如: i love you!

#include

int main()

輸入:i love you!

上述程式並不能達到預期目的,scanf()掃瞄到"i"後面的空格就認為對str的賦值結束,並忽略後面的"love you!".這裡要注意是"love you!"還在鍵盤緩衝區(關於這個問題,網上我所見的說法都是如此,但是,我經過除錯發現,其實這時緩衝區字串首尾指標已經相等了,也就是說緩衝區清空了,scanf()函式應該只是掃瞄stdin流,這個殘存資訊是在stdin中)。我們改動一下上面的程式來驗證一下:

#include

#include

int main()

輸入:i love you!

輸出:i

love

you!

好了,原因知道了,所以結論是:殘留的資訊 love you是存在於stdin流中,而不是在鍵盤緩衝區中。那麼scanf()函式能不能完成這個任務?回答是:能!別忘了scanf()函式還有乙個 % 格式控制符(如果對%不了解的請檢視本文的上篇),請看下面的程式:

#include

int main()

scanf的騷操作 scanf接收空格

include intmain void scanf 0 9 a printf s n a return0 上面的 什麼意思呢?試一下幾個輸入輸出 示例0 輸入 13579 輸出 13579 示例1 輸入 121abc 輸出 121 示例2 輸入 shouwang123nb455 輸出 注意 這裡輸...

scanf讀取含空格的字串

scanf 函式接收輸入資料時,遇以下情況結束乙個資料的輸入 遇空格 回車 跳格 鍵。遇寬度結束。遇非法輸入。scanf接收包含空格的字串 include int main 輸入 i love you 輸出 i 原因 scanf遇空格結束讀取。解決 include int main 輸入 i lov...

C語言中scanf函式與空格回車

1 scanf的返回值 scanf通常返回的是成功賦值 從標準輸入裝置賦值到引數列表所指定的記憶體區域 的資料項數,如果出錯或是遇到end of file 注意,如果想從鍵盤輸入eof,在windows的dos視窗用ctrl z 或f6 在unix系統上,用ctrl d。則返回eof,比如 scan...