回复 6楼 eFun
对了大哥 再请问一下 这个函数按照您的修改方式后无论 两次输的密码是否相符合都会显示是两次输入一致!为什么?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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<MAX_PSD_LEN - 1)
/*当按下回车键或密码长度达到19,则退出循环*/
{
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编辑过]