推 adks3489:你輸入的時候應該會按個enter吧 12/19 15:24
→ adks3489:第二次接收到的就是那個enter 12/19 15:24
※ 編輯: topwing 來自: 118.169.108.131 (12/19 15:34)
→ adks3489:我想到的是可以一個char temp,然後temp就接著word[0]讀取 12/19 15:35
→ adks3489:所以enter會被temp吃掉 12/19 15:35
→ topwing:有一點我還是想不通,如果是宣告int型態的陣列就不會遇到這 12/19 15:41
→ topwing:種問題,但是char型態就會@@a 12/19 15:41
推 VictorTom:因為%c讀入字元, 分隔符號也是字元, 所以用%c讀入時, 12/19 15:51
→ VictorTom:scanf沒辦法知道你哪個字元要印, 哪個是分隔.... 12/19 15:52
→ VictorTom:法一: 第二個字元以後改用 scanf("\n%c",&word[1]); 12/19 15:53
→ adks3489:還有你可以試試看第二個scanf %c前面加上一個空白 12/19 15:53
推 adks3489:可以再去查一下scanf的用法,大概可以解決很多疑惑 12/19 15:56
推 VictorTom:法二: scanf後面加一行 while(getchar() != '\n'); 12/19 15:56
→ VictorTom:它會把後面的字元全部抓掉直到換行, 類似清除stdin 12/19 15:56
→ VictorTom:緩衝區的動作:) 12/19 15:57
→ topwing:感謝樓上兩位的指教,謝謝! 12/19 16:07
推 andyisman:scanf(" %c", &word[1]);吧? 12/19 17:38
→ andyisman:這樣可以嗎? 12/19 17:39
推 Gway:推文正解 一個式%c 前多一個空格 就不會抓無法顯示的字元 12/19 23:08
→ Gway:另一個就使使用 fflush(stdin) 這個方法 去清空站存區內容 12/19 23:09
→ iamivers0n:fflush(stdin)不要用吧... 12/19 23:39
推 Gway:怎麼了嗎? 我是記得洪維恩書上有寫可以用啊 @@" 12/21 10:30
推 VictorTom:看來洪的書又要被多記上一筆了XD 12/21 10:55
→ VictorTom:fflush是對output stream用的, 對stdin使用的話, 12/21 10:56
→ VictorTom:結果未定義; 印象中看到的資料是Windows下似乎有效, 12/21 10:56
→ VictorTom:Linux可能就沒有作用了; 以上全憑印象, 有錯請指正:) 12/21 10:57
→ nowar100:fflush(stdin)是未定義!未定義!未定義! 請記住 XD 12/21 23:15
推 VictorTom:老師在說你有沒有在聽, 沒有嘛, 那(以下省略數十字XD) 12/21 23:28
推 Gway:水歐 眾版友真是惠我良多 XD so good 12/22 21:35