Re: [問題] 兩個scanf問題

看板C_and_CPP作者 (←這人是超級笨蛋)時間14年前 (2011/05/22 13:57), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《asadman1523 (笨板走天下)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : Code::blocks : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 問題(Question): : 照理說輸入a之後第二個scanf會接收Enter,但我照寫了一個卻不會 : 我宣告成int a,b 結果兩個都可以輸入第二個並沒有接收到Enter : 如果宣告成char 並且輸入字元才會錯 : 個人認為是scanf %d的話不讀入跳行字元所以可以順利讀取另一個整數 是這樣沒錯, 可是如同推文講的 如果格式不是 %c 或 %s, 輸入的 delimiter 類字元會被忽略 : 所以我改成 : { : int a,b; : char c,d; : scanf("%d",&a); 緩衝區目前是空的 輸入 字串(數字)+ 換行 其中字串(數字)被 parse 成整數存入 a, 換行符被留下 : scanf("%d",&b); 緩衝區目前有一個換行, 不符 %d 格式, 忽略 輸入 字串(數字)+ 換行 字串(數字)被 parse 後存入 b 第二個換行被留下 : scanf("%c",&c); 緩衝區有一個換行符字元, 符合 %c 格式, 存入 c : scanf("%c",&d); 緩衝區目前是空的 輸入 字元 + 換行 字元被存入 d, 換行被留下 : } 程式結束 : 這樣子,輸入a b 後應該有兩個Enter在緩衝區給c d接收 : 但是我卻又可以輸入d...是我哪裡搞錯嗎? 這樣應該夠清楚了吧... -- "問おう、貴方が私のマスターか?" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.81.146

05/22 14:24, , 1F
謝謝~原來是第一個換行字符被忽略了!!!
05/22 14:24, 1F
文章代碼(AID): #1DsANGNT (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DsANGNT (C_and_CPP)