[問題] Y/N判斷問題

看板C_and_CPP作者 (北風)時間13年前 (2011/04/09 09:53), 編輯推噓1(1016)
留言17則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) DEV-C++ 問題(Question): 在while的判斷問題及printf的錯誤 預期的正確結果(Expected Output): 恭喜你過關!準備好進入下一關了嗎?(Y/N) 若輸入y or Y 則應顯示 Let's go! 若是輸入其他非Y or y 的鍵 則應顯示 深吸一口氣,加油!準備好進入下一關了嗎?(Y/N) 且持續顯示顯示直到輸入Y or y 則顯示Let's go! 且break 錯誤結果(Wrong Output): 錯誤成一次顯示 準備好進入下一關了嗎?(Y/N)深吸一口氣,加油! 準備好進入下一關了嗎?(Y/N) 且輸入y/n 沒有正確判斷顯示應對的字串 程式碼(Code):(請善用置底文網頁, 記得排版) http://pastie.org/1774153 補充說明(Supplement): 若有說明不清楚的地方請多指教 感激! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.124.183

04/09 10:03, , 1F
04/09 10:03, 1F

04/09 10:53, , 2F
uranusjr兄真是一針見血,scanf連續使用的確要小心
04/09 10:53, 2F

04/09 10:54, , 3F
還有原po裡面的q記得要改成char來宣告,不是用int
04/09 10:54, 3F

04/09 11:05, , 4F
我已經把int改成char 也在else{後面加上getchar();
04/09 11:05, 4F

04/09 11:06, , 5F
不過好像只有第一次輸入n 第二次輸入y才能顯示正確字串..
04/09 11:06, 5F

04/09 11:55, , 6F
用getche試試看
04/09 11:55, 6F

04/09 12:04, , 7F
getchar是有緩衝區的 getch getche沒有
04/09 12:04, 7F

04/09 12:24, , 8F
還是不能@@.....scanf跟我做對...
04/09 12:24, 8F

04/09 12:33, , 9F
getchar要加在while前面...
04/09 12:33, 9F

04/09 12:45, , 10F
依照樓上的意思試了一下 成功了@@
04/09 12:45, 10F

04/09 14:01, , 11F
其實最簡單的準則是, 只要出現 scanf 就在後面馬上加個
04/09 14:01, 11F

04/09 14:02, , 12F
getchar() (之類的), 這樣就不用研究半天要加在哪...
04/09 14:02, 12F

04/09 17:18, , 13F
重點是getchar與scanf都是有緩衝區的 還有換行鍵
04/09 17:18, 13F

04/09 19:58, , 14F
" %c" 也是一招啦 我個人比較 prefer 這種寫法
04/09 19:58, 14F

04/09 19:58, , 15F
(當程式裡全部都是 scanf 的時候)
04/09 19:58, 15F

04/09 19:58, , 16F
畢竟除了 %c 以外的 format spec 都會吃掉 whitespace
04/09 19:58, 16F

04/09 19:59, , 17F
那我只要讓 %c 行為一致就好
04/09 19:59, 17F
文章代碼(AID): #1DdxmLgV (C_and_CPP)