看板 C_and_CPP 關於我們 聯絡資訊
預設密碼:1234 使用者有三次機會 輸入正確顯示"密碼正確" 輸入錯誤顯示"密碼錯誤" 我的問題是:為何我的程式有以下兩個問題? 1.第一次輸1234=>"密碼正確" 但是 第二次輸1234=> "密碼錯誤" 2.第一次輸入錯誤 => "密碼錯誤" 但是 第二次 輸1234 還是=> "密碼錯誤" 到底哪裡錯了? 請先不要管我用甚麼方式寫(我知道有更好的寫法~我只是想知道錯在哪~) 我用dev-c++ 寫的 謝謝!! ----------------------以下為程式碼----------------------- #include "stdio.h" #include <stdlib.h> #define a '1' #define b '2' #define c '3' #define d '4' int main(int argc, char *argv[]) { char aa,bb,cc,dd; int i=3; while(i!=0) { printf("請輸入密碼(四個數字)\n"); scanf("%c%c%c%c",&aa,&bb,&cc,&dd); if(a==aa&&b==bb&&c==cc&&d==dd) //"=="是C的"= =" { printf("密碼正確\n"); } else { printf("密碼錯誤\n"); } i--; } system("pause"); return 0; } ------------------------------------以上為程式碼------------------ 謝謝!! -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.128.108
xatier:提示: printf("%c%c%c%c", aa, bb, cc, dd); 11/17 17:35
xatier:先把變數內容印出來看看:) 11/17 17:36
ot15:把變數內容印出來?~~怎麼印?教一下 11/17 17:36
xup6u40:他好像教你了阿… 11/17 17:37
ot15:喔~我懂你意 11/17 17:37
ot15:是要放哪裡? 11/17 17:38
xatier:你要考慮到scnaf吃完後還有留一個'\n'在外面,所以下一個aa 11/17 17:39
ot15:第二次我輸入~再印出變數~變成只剩123 11/17 17:39
xatier:的值是'\n' bb是 '1' ... 11/17 17:40
xatier:當然,printf很忠實的將aa你面存的'\n'字原印出來了 11/17 17:40
ot15:喔~ 11/17 17:40
ot15:等一下~ 11/17 17:41
ot15:那怎麼解決??? 11/17 17:42
purpose:爬文,注意板規1 11/17 17:43
james732:可以看這篇文章:#1ClllYUd (C_and_CPP) 11/17 17:43
ot15:去哪找這篇? 11/17 17:44
ot15:to J老大~~文章哪裡找? 11/17 17:45
james732:在本板文章列表貼上 #1ClllYUd 這串字 11/17 17:45
xatier:http://nopaste.csie.org/6c7e2 也可以用字串來解決問題 11/17 17:46
xatier:順帶一提,我覺得你 i-- 放的位置怪怪的,仔細想一下你的程 11/17 17:46
xatier:式邏輯 11/17 17:46
ot15:to J ~你是說按"/"輸入"#1ClllYUd"??~~沒東西啊?! 11/17 17:48
james732:不必按/,直接貼上就好 11/17 17:49
ot15:喔 11/17 17:50
ot15:to xat 你覺得哪裡怪? 11/17 17:51
xatier:不是應該猜錯才要 i-- //減少猜密碼的次數 11/17 17:53
xatier:難不成你沒看我的code ? 11/17 17:53
xatier: ^到 11/17 17:54
ot15:事啦~但是我故意的~想要第二次輸入後1234~仍出現正確 11/17 17:55
ot15:但是沒辦法ㄋㄟ 11/17 17:55
tropical72:scanf("%c%c%c%c%*c",&a,&b,&c,&d); 第一次輸入會留下 11/17 17:56
tropical72:'\n', 所以第二次輸入的時候會選讀到 '\n', 可以用 11/17 17:57
tropical72:%*c 把多餘的 '\n' 讀走.or while(getchar()!='\n'); 11/17 17:57
ot15:思考中 11/17 17:59
ot15:to tro 你是故意多打一個 %c ?? 11/17 18:00
ot15:喔~看懂~思考中 11/17 18:00
james732:%c跟%*c不一樣 11/17 18:00
ot15:!!!!!!!!OK了~ 11/17 18:02
ot15:但是 11/17 18:02
ot15:%*c是啥意思?? 11/17 18:03
ot15:謝謝所有參與討論的人~~感激~ 11/17 18:06
nowar100:請改標題 這標題太沒有意義了 11/17 21:20
loveflames:scanf("%c")也行吧? 11/17 21:26
tropical72:可以,要多一個變數讀走而已. 11/17 22:12
stanely321:覺得怪異時就用printf印出來看看,然後不瞭解再問。 11/20 09:56