Re: [問題] 兩個scanf問題
※ 引述《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
討論串 (同標題文章)