推 LPH66: scanf 數字時不會吃掉在它後面那個不是數字的字 10/12 22:39
→ LPH66: 你在數字後面敲的 Enter 也是一個字, 它被 getchar 抓走了 10/12 22:40
→ LPH66: 那個字印出來的效果是換行 (其實就是 '\n') 10/12 22:41
→ hth9494: 原來是這樣,謝謝這位大大,可是我不懂的地方是 10/12 22:45
→ hth9494: 為什麼getchar執行的順序會那麼早,他明明被寫在printf 10/12 22:46
→ hth9494: 之後,為什麼程式不會先印出數字,再讓我輸入字元呢 10/12 22:47
→ hth9494: 還有我的程式該怎麼改才會達到我想要的效果呢 10/12 22:48
→ hth9494: 就是可以讓我依序輸入數字和一個字元 例如y之類的 10/12 22:50
推 LPH66: 實際上它確實是印出數字後再去讀字元的, 只是因為所有輸入 10/12 23:20
→ LPH66: 會被系統先存在一個暫存區裡才給你讀, 才會造成這種現象 10/12 23:21
→ LPH66: 這種問題只要你有單獨讀字元跟讀其他東西混著就會發生 10/12 23:22
→ LPH66: 主要是因為讀字元不會跳過空白跟換行, 但讀其他東西會 10/12 23:22
→ LPH66: 因此常見解法就是在讀字元之前先一直讀到換行發生為止 10/12 23:23
→ LPH66: 我回的那篇文原文裡有個 FLUSH 巨集就是用來清除的 10/12 23:29
→ linotwo: 在 getchar 前面用 scanf("%*[\n\r]"); 把換行讀掉試試看 10/12 23:36
推 ronin728: C語言自由度高,相對安全性弱,編譯過非正確執行的保證 10/13 00:41
→ hth9494: 了解了,非常感謝!!! 10/13 01:16
噓 damody: 這標題不是違反版規了嗎 10/13 18:22
推 zxc159623487: 加一個 scanf(" "); 10/31 08:13