推 springman: 這是多久以前的例子?getch() 與 getche() 好像是 dos 07/02 20:57
→ springman: 年代使用的方式。還用 goto,雖然 goto 是合法的關鍵字 07/02 20:58
→ springman: 可是儘可能不要使用。 07/02 20:58
推 poolongkong: 是 for 條件句的問題嗎 07/02 21:01
→ poolongkong: 改成 a < 11 呢 07/02 21:02
→ poolongkong: 如果記得沒錯的話 passcode[a] != 13 這樣子的意思是 07/02 21:04
→ poolongkong: passcode[a] 裡面的值不等於13
對壓,13對應到的是enter鍵,我的意思是如果按了enter就跳離for迴圈
※ 編輯: belaniconaze (1.162.68.162), 07/02/2016 21:43:26
喔還有,我每次建置的時候他都說組態已過期
※ 編輯: belaniconaze (1.162.68.162), 07/02/2016 21:48:33
→ ilms49898723: for迴圈的部分,你讀完放到passcode[a],for在判斷 07/02 21:50
→ ilms49898723: 前a會先++,判的不是你剛存的那一個(會是a-1) 07/02 21:50
謝謝樓上!
→ ilms49898723: 補充一下怕誤會,for判斷p...[a],換行在p...[a-1] 07/02 21:51
推 art1: char(13)+char(10) 在vc底下似乎才是按enter會送出的內容 07/02 22:28
→ art1: 所以用來判斷停止的條件永遠達不到,就卡在迴圈裡面了 07/02 22:28
推 art1: check裡面用來比較的程式碼也很怪,你要一個字元一個字元比 07/02 22:35
→ art1: 結果輸入密碼的地方有用for迴圈,check那邊卻沒有,超怪.. 07/02 22:36
→ art1: 喔,看懂了,沒用過這種goto的迴圈用法... 07/02 22:38
→ phishingphi: passcode沒初始化也不知道一開始passcode[0]是甚麼值 07/03 02:18
→ phishingphi: 或許一開始passcode[0]剛好值就是13那不就沒輸入密碼 07/03 02:18
推 Sidney0503: 居然是dos時代的標頭檔XD 07/03 10:15
推 art1: 要用換行字元當結束條件,用'\n'比較好 07/03 10:46
※ 編輯: belaniconaze (1.162.85.191), 07/03/2016 13:07:13
我已經改成這樣了,但還是不知哪裡出錯,一直不行
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
char passcode[40];
int a=0;
printf("請輸入密碼:\n");
while(passcode[a-1]!='\n')
{
passcode[a] = _getche();
if (passcode[a] == 8)
{
a -= 1;
}
a++;
}
char correct[] = { 'A','B','C','D','e','1','1','1','1','1','1','\n' };
a = 0;
check:
if (correct[a] == passcode[a])
{
if (passcode[a] == 13)
{
goto correct;
}
else
{
a++;
goto check;
}
}
else if (correct[a] != passcode[a])
goto wrong;
correct: printf("correct!\n");
goto end;
wrong: printf("WRONG!\n");
end: system("PAUSE");
return 0;
}
其實就是一些微調而已,我還是不知怎麼了一直無法跳離迴圈
※ 編輯: belaniconaze (1.162.85.191), 07/03/2016 13:15:55
→ VictorTom: 既然都用VC2015了, 直接用除錯功能單步執行看看如何? 07/03 14:09
→ bibo9901: while 會用到 passcode[-1] 07/03 14:26
推 art1: 先從正確密碼只有兩個字元開始 07/03 16:36
推 art1: 如果只是要把換行字元當成跳出迴圈的條件,其實不必讓正確密 07/03 16:43
→ art1: 碼內有換行字元 07/03 16:44
→ MOONRAKER: 程式有改組態當然過期。微軟的那美克星中文隨便看就好 07/04 16:09
推 frank99977: springman老師好! 07/07 12:18