[問題] c語言 輸入判斷問題 (已解決)

看板C_and_CPP作者 (soli)時間10年前 (2014/04/12 13:14), 10年前編輯推噓3(306)
留言9則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 如何在輸入文字時得到相對應的輸出 以及如果數字後有小數點該如何處理 餵入的資料(Input): cat 預期的正確結果(Expected Output): must enter integer : 錯誤結果(Wrong Output): 進入無限迴圈 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): 試過一些方式可是都沒成功 目前先把處理文字部分的程式碼先刪了 煩請大家幫忙解惑 目前是想輸入數字然後畫菱形, 輸入的數字等於菱形中間的星星數, 然後只能輸入奇數, 輸入偶數或是負數或是文字就會出現對應的輸出 然後再請輸入者重新輸入 然後即使是輸入奇數, 遊戲還是會一直問下去 然後如果是輸入奇數但有後面小數點, 則還是顯示該奇數的菱形 ex. 輸入偶數和負數: %d not odd and > 0 enter ODD size > 0: 輸入文字: must enter integer enter ODD size > 0: -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 169.231.24.14 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1397279660.A.700.html ※ 編輯: solinari (169.231.24.14), 04/12/2014 13:25:11

04/12 13:43, , 1F
用fgets跟sscanf代替scanf
04/12 13:43, 1F

04/12 14:05, , 2F
提示是希望用scanf, 還有 while (getchar() != '\n')
04/12 14:05, 2F

04/12 14:06, , 3F
可是後面那個我不太懂..
04/12 14:06, 3F

04/12 14:39, , 4F
while(getchar()!='\n');是放在 scanf 後面一行(兩個都放)
04/12 14:39, 4F

04/12 14:39, , 5F
原理是如果輸入 5 的話,還會有一個 '\n' 留在系統裡 ;
04/12 14:39, 5F

04/12 14:40, , 6F
若輸入 5.12 的話,第一個 5 會讀給 n , 後面的 .12('\n')
04/12 14:40, 6F

04/12 14:40, , 7F
由 getchar() 讀走.
04/12 14:40, 7F

04/13 00:01, , 8F
判斷是否讀入整數可以用scanf的回傳值判斷
04/13 00:01, 8F

04/13 00:40, , 9F
小數部分處理好了. 請問輸入者誤輸入文字該如何處理呢?
04/13 00:40, 9F
※ 編輯: solinari (169.231.24.14), 04/13/2014 16:47:46
文章代碼(AID): #1JICkiS0 (C_and_CPP)