c语言定义int变量 故意输入字母,密码登录,当故意输错一次密码后无论以后对错都显示密码错误!求解决!...

回复 6楼 eFun

对了大哥 再请问一下 这个函数按照您的修改方式后无论 两次输的密码是否相符合都会显示是两次输入一致!为什么?

#include

#include

#include

#define scanf scanf_s

#define MAX_PSD_LEN 20

int Password();

int changepassword();

char PassWord1[MAX_PSD_LEN], *p = PassWord1, ch;

char PassWord2[MAX_PSD_LEN], *q = PassWord2, qh;

char PassWord3[MAX_PSD_LEN], *o = PassWord3, oh;

int count1 = 0, count2 = 0, count3 = 0;

int main()

{

int a1,a2;

while (1)

{

a1 = Password();

if (a1 == 1)

{

a2= changepassword();

if (a2==2)

break;

}

}

system("pause");

return 0;

}

int Password()                                        //Password函数,功能是使用原始密码登录学生管理系统,此函数是参考网上高手代码且进行修改

{

while (1)

{

printf("请输入您的密码!\n");

oh = getch();

while (oh != 13 && count3

{

if (oh == 8)                       /*如果按下的是向前删除键,则...*/

{

if (count3)              /*如果密码串中字符数大于零,则向前删除一个字符*/

{

//o--;

count3--;

printf("\b ");/*光标回退一格,将星号(*)改为空格*/

printf("\b"); /*光标重新回退一格*/

}

}

else if ((oh <= 'Z'&&oh >= 'A') || (oh <= 'z'&&oh >= 'a') || (oh <= '9'&&oh >= '0'))

/*如果输入的是密码的有效字符*/

{

printf("*");          /*输出一个星号*/

o[count3++] = oh;

// *o = oh;                /*记录密码内容*/

// o++;

}

oh = getch();                    /*等待输入下一个字符*/

}

PassWord3[count3] = 0;

if (strcmp(PassWord3, "woaic") == 0)

{

printf("登陆成功!\n");

return 1;

}

else

{

count3 = 0;

printf("密码输入错误!请重新输入:\n");

printf("-------------------------------------------------------------------\n");

}

}

}

int changepassword() //changepassword函数,主要功能是修改密码,此函数是参考网上高手代码且进行修改

{

while (1)

{

printf("这是你第一次登陆!请修改密码!\n");

printf("\n");

ch = getch();

while (ch != 13 && count1 < MAX_PSD_LEN - 1)       /*当按下回车键或密码长度达到19,则退出循环*/

{

if (ch == 8)                       /*如果按下的是向前删除键,则...*/

{

if (count1)              /*如果密码串中字符数大于零,则向前删除一个字符*/

{

//p--;

count1--;

printf("\b ");/*光标回退一格,将星号(*)改为空格*/

printf("\b"); /*光标重新回退一格*/

}

}

else if ((ch <= 'Z'&&ch >= 'A') || (ch <= 'z'&&ch >= 'a') || (ch <= '9'&&ch >= '0'))

/*如果输入的是密码的有效字符*/

{

printf("*");          /*输出一个星号*/

count1++;

//*p = ch;                /*记录密码内容*/

//p++;

}

ch = getch();                    /*等待输入下一个字符*/

}

PassWord1[count1] = 0;

printf("\n");

printf("请再次输入你的密码!\n");

qh = getch();

while (qh != 13 && count2 < MAX_PSD_LEN - 1)       /*当按下回车键或密码长度达到19,则退出循环*/

{

if (qh == 8)                       /*如果按下的是向前删除键,则...*/

{

if (count2)              /*如果密码串中字符数大于零,则向前删除一个字符*/

{

//q--;

count2--;

printf("\b ");/*光标回退一格,将星号(*)改为空格*/

printf("\b"); /*光标重新回退一格*/

}

}

else if ((qh <= 'Z'&&qh >= 'A') || (qh <= 'z'&&qh >= 'a') || (qh <= '9'&&qh >= '0'))

/*如果输入的是密码的有效字符*/

{

printf("*");          /*输出一个星号*/

count2++;

//*q = qh;                /*记录密码内容*/

//q++;

}

qh = getch();                    /*等待输入下一个字符*/

}

PassWord2[count2] = 0;

if (strcmp(PassWord1, PassWord2) == 0)

{

printf("\n");

printf("密码修改成功!请记住密码!\n");

printf("\n");

return 2;

}

else

{

count1 = 0;

count2 = 0;

printf("两次输入不一致!请重新登录!");

}

}

}

[此贴子已经被作者于2016-1-4 12:02编辑过]

6f83fddf9cb9ff6843fffd45e1807199.gif

编程破防线

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值