[問題] 關於scanf

看板C_and_CPP作者 (洪爺不賣漢堡)時間14年前 (2009/12/23 01:17), 編輯推噓5(508)
留言13則, 7人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) c裡面是不能連續用scanf嗎 只能夠有一個scanf,其他要用getch之類的來抓字元嗎? 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++ on vista 有問題的code: (請善用置底文標色功能) code網址在這 http://codepad.org/rJFXmg8J 補充說明: 在這裡先謝謝了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.126.3.214

12/23 01:30, , 1F
你踩到了 \n 還留在 buffer 的地雷
12/23 01:30, 1F

12/23 01:39, , 2F
我用scanf("%c\n",&a)還是不行,scanf("\n%c",&a)就可以
12/23 01:39, 2F

12/23 01:39, , 3F
有人可以解釋一下嗎?
12/23 01:39, 3F

12/23 01:45, , 4F
把scanf參數的"%c"改成" %c"
12/23 01:45, 4F

12/23 01:46, , 5F
就會跳過space和\n了
12/23 01:46, 5F

12/23 01:47, , 6F
"%c"會吃到所有空白和換行字元,請參考scanf的說明
12/23 01:47, 6F

12/23 01:48, , 7F

12/23 01:55, , 8F
一個比較笨的方法就是你後兩個scanf連續用兩次
12/23 01:55, 8F

12/23 01:56, , 9F
這樣第一個scanf就會吃掉前一個scanf留下的\n
12/23 01:56, 9F

12/23 02:01, , 10F
原來是這樣那我了解了..非常謝謝
12/23 02:01, 10F

12/23 02:02, , 11F
謝謝 freesamael
12/23 02:02, 11F

12/23 09:46, , 12F
#1BB7xIhX 這篇也才剛有人討論過:)
12/23 09:46, 12F

12/23 10:58, , 13F
不然用看看gets()
12/23 10:58, 13F
文章代碼(AID): #1BCFyc8h (C_and_CPP)