[問題] 跳過讀取動作, 重複印出字串

看板C_and_CPP作者 (New page!)時間11年前 (2013/04/09 20:51), 編輯推噓4(4014)
留言18則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 這是一個簡單的輸入輸出文字, 但不知道為什麼,輸入完之後,迴圈會多跑二圈 餵入的資料(Input): 預期的正確結果(Expected Output): http://goo.gl/VIN0h 錯誤結果(Wrong Output): http://goo.gl/5iLM0 程式碼(Code):(請善用置底文網頁, 記得排版) main() { while (1){ char c; printf("請輸入一個字元:"); scanf("%c",&c); printf("%c",c); } } 補充說明(Supplement): 迴圈應該是我輸入完字元後,它印出,然後再請我重新輸入 但他卻印了兩次"請輸入一個字元" ,這是我不解的地方。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.56.10 ※ 編輯: ice0803 來自: 112.104.56.10 (04/09 20:53)

04/09 20:55, , 1F
\r\n
04/09 20:55, 1F

04/09 20:59, , 2F
break;
04/09 20:59, 2F
※ 編輯: ice0803 來自: 112.104.56.10 (04/09 21:44)

04/09 21:59, , 3F
那就把printf("請輸入一個字元:");移到迴圈外阿
04/09 21:59, 3F

04/09 22:11, , 4F
印了兩次是因為你直接按enter沒有輸入其他字
04/09 22:11, 4F

04/09 23:05, , 5F
scanf的%c前面多加空格
04/09 23:05, 5F

04/09 23:34, , 6F
讓會寫一點程式的魯蛇替你解答 一樓正解(跟迴圈沒關系)
04/09 23:34, 6F

04/09 23:35, , 7F
http://ppt.cc/8xrp 一開始跟原PO一樣
04/09 23:35, 7F

04/09 23:36, , 8F
經過更多的測試 http://ppt.cc/Qk5a
04/09 23:36, 8F

04/09 23:37, , 9F
魯蛇最後就成功了 http://ppt.cc/HIC3
04/09 23:37, 9F

04/09 23:39, , 10F
有不懂歡迎再發問
04/09 23:39, 10F

04/10 00:12, , 11F
fflush(stdin) 是有問題的..... 請改用 fpurge(stdin)
04/10 00:12, 11F

04/10 00:49, , 12F
fpurge 不是到處都能用的 @@ 自己吃光最穩
04/10 00:49, 12F

04/10 00:55, , 13F
也是.那只好用 fgets 了
04/10 00:55, 13F

04/10 01:08, , 14F
http://ideone.com/MvVaep 像這樣在scanf加空格能嗎
04/10 01:08, 14F

04/10 01:08, , 15F
我自己測試是正常的,但請問會有其他問題嗎?
04/10 01:08, 15F

04/10 11:28, , 16F
謝謝大家,我了解了,但dia大提出加空格也行,為什麼?
04/10 11:28, 16F

04/10 11:32, , 17F
那個空格會吃掉換行字元
04/10 11:32, 17F

04/10 15:30, , 18F
感謝~~
04/10 15:30, 18F
文章代碼(AID): #1HP0xJhc (C_and_CPP)