→ EdisonX:< 還是上面這篇也是被納入零碎資料 ? > 11/09 21:32
→ BombCat:謝謝E的資料很實用,主要是搞不懂為什麼會變成無窮迴圈? 11/09 21:34
→ linotwo:因為你每次都從頭開始讀,當然每次結果都一樣啊... 11/09 21:35
→ linotwo:而且你的 while 迴圈沒有中斷條件 11/09 21:36
→ BombCat:那為什麼用scanf("%s")就不會呢? 11/09 21:37
→ linotwo:因為 scanf 是讀串流,讀了以後會自動往後讀。 11/09 21:39
→ BombCat:對阿 可是用scanf("%[1-9]")就變成無窮迴圈,想知道為什麼 11/09 21:41
→ linotwo:你寫的程式碼不就是無窮迴圈嗎? 11/09 21:45
→ BombCat:我輸入1A 2B 3B 4D 5E,為什麼scanf到最後沒停下來? 11/09 21:46
→ BombCat:而且輸出都是1? 11/09 21:47
→ linotwo:大概是因為這個寫法它不會自動往後讀吧 11/09 21:49
→ BombCat:那請問l大知道要怎麼解決嗎? 11/09 21:50
→ linotwo:scanf(...) 後面接 fflush(stdin) 11/09 21:51
→ BombCat:感謝l大 這樣做確實有效耶 不過fflush(stdin)還蠻奇怪的 11/09 21:54
推 LPH66:不要 fflush(stdin) 啦囧 用 getchar() 不好嗎 OAO 11/09 22:19
→ BombCat:L大的說getchar()也行耶,越來越好奇是什麼原因引起的的? 11/09 22:22
→ BombCat:我猜是一直不吃' '空白,所以一直留在同一個地方XD 11/09 22:28
→ Cypresslin:你用scan set時,scanf讀到不屬於設定內的東西就會停住 11/10 00:24
→ Cypresslin:所以當輸入1A,他只會吃到1,A會留在stdin的暫存裡, 11/10 00:25
→ Cypresslin:到下個迴圈scanf還是吃不到數字->loop 所以把stdin洗乾 11/10 00:28
→ Cypresslin:淨就正常,我猜是這樣,不過我也剛學,有錯多多包涵啦 11/10 00:35
→ Cypresslin:另外可用fget抓留在stdin的東西來看 ideone.com/0UZeCX 11/10 00:38
→ BombCat:非常謝謝C大讓我知道為什麼會這樣了 :) 11/10 00:49