[問題] scanf及fflush的問題?
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GNU GCC using Code::Blocks
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
none
問題(Question):
在迴圈中的scanf標準化輸入中如果是scanf("%lf,%lf",&num1,&num2)
則會正常讀入
若是改成scanf("(%lf,%lf)",&num1,&num2)
則會出現錯誤(只能讀入第一次的內容)
若是加入fflush(stdin)就會需要多輸入一個空白
迴圈外有一個printf、一個scanf、再一個printf
完整的程式碼在這邊 http://paste.plurk.com/show/2189312/
餵入的資料(Input):
3 (1,2) (3,4) (5,6)
預期的正確結果(Expected Output):
1 2
3 4
5 6
錯誤結果(Wrong Output):
1 2
1 2
1 2
程式碼(Code):(請善用置底文網頁, 記得排版)
http://paste.plurk.com/show/2189312/
補充說明(Supplement):
很少用到標準化輸入 不知道為什麼會出這種問題
用了fflush以後會變成scanf無法用空白來決定輸入是否停止
所以如果我把(1,2) (3,4)中間用空白來打
就沒辦法讀了
如有不清 我會再補充 感謝大家m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.159.237
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1434709283.A.6BF.html
→
06/19 18:29, , 1F
06/19 18:29, 1F
→
06/19 18:31, , 2F
06/19 18:31, 2F
還是沒辦法欸...
可是如果我其他的完全不動,
只把fflush拿掉
在把scanf第一個引數內的左括弧拿掉
scanf("%lf,%lf)",&num1,&num2);
這樣就會是正常的 不解......
※ 編輯: sr29 (59.115.159.237), 06/19/2015 21:01:45
→
06/19 21:35, , 3F
06/19 21:35, 3F
→
06/19 21:43, , 4F
06/19 21:43, 4F
推
06/19 23:10, , 5F
06/19 23:10, 5F
→
06/19 23:11, , 6F
06/19 23:11, 6F
推
06/20 00:50, , 7F
06/20 00:50, 7F
推
06/20 16:27, , 8F
06/20 16:27, 8F
easyget大大跟yvb大大的方法我都試過了
結果都有跑出預期的結果
真的不懂為啥orz
懇請各位開示
( 從來沒遇過這種情形.... )
※ 編輯: sr29 (59.115.159.237), 06/20/2015 16:47:35
推
06/20 17:14, , 9F
06/20 17:14, 9F
→
06/20 17:15, , 10F
06/20 17:15, 10F
→
06/20 17:15, , 11F
06/20 17:15, 11F
→
06/20 17:16, , 12F
06/20 17:16, 12F
→
06/20 17:16, , 13F
06/20 17:16, 13F
→
06/20 17:17, , 14F
06/20 17:17, 14F
→
06/20 17:18, , 15F
06/20 17:18, 15F
→
06/20 17:47, , 16F
06/20 17:47, 16F
→
06/22 20:13, , 17F
06/22 20:13, 17F
→
06/24 11:54, , 18F
06/24 11:54, 18F