[问题] 新手 请帮忙除错!(不知哪里有错)

楼主: belaniconaze (Nosae)   2016-07-02 20:50:42
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)VC++2015
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)NO
问题(Question):我是要设计一个可以打密码的程式
默认密码是ABCDe111111
但是我一执行
按完密码后就完全卡在那边
也没有当机的现象
我真的不知道怎么了
*[m
喂入的资料(Input):ABCDe111111
预期的正确结果(Expected Output):电脑显示:correct!,程式正常结束
错误结果(Wrong Output):如上文讲到的,黑黑画面上的那个底线就一直闪一直闪
完全没有继续执行,感觉像是还在getche那段
程式码(Code):(请善用置底文网页, 记得排版)
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
char passcode[40];
int a;
printf("请输入密码:\n");
for (a = 0; passcode[a] != 13; a++)
{
passcode[a] = _getche();/*getche前面有底线是他教我用的/*
if (passcode[a] == 8)
{
a -= 1;
}
}
char correct[] = { 'A','B','C','D','e','1','1','1','1','1','1',13 };
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;
}

补充说明(Supplement):我之所以不用getch是因为我想清出的知道发生什么事
等问题解决了会改回getch*[m
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-07-04 16:09:00
程式有改组态当然过期。微软的那美克星中文随便看就好
作者: springman (司布林)   2016-07-02 20:57:00
这是多久以前的例子?getch() 与 getche() 好像是 dos年代使用的方式。还用 goto,虽然 goto 是合法的关键字可是尽可能不要使用。
作者: poolongkong (普拢贡)   2016-07-02 21:01:00
是 for 条件句的问题吗改成 a < 11 呢如果记得没错的话 passcode[a] != 13 这样子的意思是
作者: ilms49898723 (LittleBird)   2016-07-02 21:50:00
for循环的部分,你读完放到passcode[a],for在判断前a会先++,判的不是你刚存的那一个(会是a-1)补充一下怕误会,for判断p...[a],换行在p...[a-1]
作者: art1 (人,原来不是人)   2016-07-02 22:28:00
char(13)+char(10) 在vc底下似乎才是按enter会送出的内容所以用来判断停止的条件永远达不到,就卡在循环里面了check里面用来比较的程式码也很怪,你要一个字符一个字符比结果输入密码的地方有用for循环,check那边却没有,超怪..喔,看懂了,没用过这种goto的循环用法...
作者: phishingphi (hsnutontu)   2016-07-03 02:18:00
passcode没初始化也不知道一开始passcode[0]是什么值或许一开始passcode[0]刚好值就是13那不就没输入密码
作者: Sidney0503 (Sidney0503)   2016-07-03 10:15:00
居然是dos时代的标头档XD
作者: art1 (人,原来不是人)   2016-07-03 10:46:00
要用换行字符当结束条件,用'\n'比较好
作者: VictorTom (鬼翼&娃娃鱼)   2016-07-03 14:09:00
既然都用VC2015了, 直接用除错功能单步执行看看如何?
作者: bibo9901 (function(){})()   2016-07-03 14:26:00
while 会用到 passcode[-1]
作者: art1 (人,原来不是人)   2016-07-03 16:36:00
先从正确密码只有两个字符开始如果只是要把换行字符当成跳出循环的条件,其实不必让正确密码内有换行字符
作者: frank99977 (hello)   2016-07-07 12:18:00
springman老师好!

Links booklink

Contact Us: admin [ a t ] ucptt.com