首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于登陆密码有关问题

2012-02-15 
关于登陆密码问题我把密码改为*之后就两次输入密码不一致了,请问为什么?#include stdio.h#include stri

关于登陆密码问题
我把密码改为*之后就两次输入密码不一致了,请问为什么?

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
int   x=0;//人的编号
int   y=0;//书的编号
typedef   struct   user
{
int   ID;//用户编号
char   name[11];//用户姓名
char   password[10];//用户密码
int   store;//记录用户借阅图书数量
int   B_id[5];//书的ID
float   money;//用户帐户
};
user   person[30];
user   admin={0, "admin ", "001 "};
typedef   struct   book
{
int   ID;//书编号
char   name[21];//书名
char   author[11];//作者
int   year;//记录图书出版年份
int   total;//图书总数
int   store;//记录本类图书借出的数量

};
book   books[100];
//////////////////////////////////////////////////////////
void   indix();
int   start();
void   password();
void   checkin();
///////////////////////////////////////////////////////////
void   main()
{
int   s;
int   i;
while(1)
{

indix();
s=start();
while(1)
{
if(s==1)
{
system( "cls ");
checkin();

printf( "\n\n\n\t\t\t\t注册成功!!!\n\n ");
system( "pause ");
break;
//password();
}
else   if(s==2)
{

break;
}
else   if(s==3)
{
for(i=0;i <3;i++)
{
printf( "%d\n%s\n%s\n%d\n%d\n%.2f ",person[i].ID,person[i].name,person[i].password,person[i].store,person[i].B_id[i],person[i].money);
printf( "\n\n\n ");
}
}
else
{
break;
}
}
}
}
void   indix()
{
printf( "\n\n\n\n ");
printf( "\t\t\t★☆★☆★★☆★☆★☆★☆★☆★☆★☆★\n ");
printf( "\t\t\t★☆                                               *                 ☆★\n ");
printf( "\t\t\t★☆                                         ☆                     ☆★\n ");
printf( "\t\t\t★☆                                   *                             ☆★\n ");
printf( "\t\t\t★☆                   图书馆欢迎您!                     ☆★\n ");
printf( "\t\t\t★☆                       ☆                                       ☆★\n ");
printf( "\t\t\t★☆                 *                                 ☆★\n ");
printf( "\t\t\t★☆           ☆                                                 ☆★\n ");


printf( "\t\t\t★☆     *                                                      ☆★\n ");
      printf( "\t\t\t★☆★☆★★☆★☆★☆★☆★☆★☆★☆★\n ");
printf( "\n\n\n\n ");
printf( "\t\t\t1.注册\n ");
printf( "\t\t\t2.登陆\n ");
printf( "\t\t\t3.退出\n\n\n\n ");
}
int   start()
{
char   s[10];
scanf( "%s ",&s);
if(strcmp(s, "1 ")==0)
return(1);
else
{
if(strcmp(s, "2 ")==0)
return(2);
else  
{
if(strcmp(s, "3 ")==0)
return(3);
else
{
return(0);
}

}
}
}
void   checkin()//注册
{

int   i;

int   re;//记录两次密码验证的值
char   pwd_temp[20];//记录临时的密码
//users   user_temp;
printf( "\n\n\n\t\t\t\t欢迎您的加入!!\n\n: ");
printf( "\n\n\n\t\t\t\t请输入用户名: ");
scanf( "%s ",person[x].name);
do
{
printf( "\n\n\t\t\t\t请输入用户密码: ");
for(i=0;i <=8;i++)
{
person[x].password[10]=getch();
if(person[x].password[10]== '\r ')
{
person[x].password[10]= '\0 ';
break;

}
else
{
printf( "* ");
}

}
printf( "\n\n\t\t\t\t请再次输入密码: ");
for(i=0;i <=8;i++)
{
pwd_temp[10]=getch();
if(pwd_temp[10]== '\r ')
{
pwd_temp[10]= '\0 ';
break;

}
else
{
printf( "* ");
}

}
printf( "\nps=%s\n ",person[x].password);
//printf( "ps=%s\n ",pwd_temp);
                re=strcmp(person[x].password,pwd_temp);
if(re!=0)
printf( "\n\n\t\t\t两次密码不一致,请重新输入!!!\n ");

}while(re!=0);
printf( "\n\n\t\t\t\t请输入您的注册资金: ");
scanf( "   %f ",&(person[x].money));
person[x].ID=(x+1);
person[x].store=0;
for(i=0;i <5;i++)
{
person[x].B_id[i]=0;
}

}

[解决办法]
do
{
printf( "\n\n\t\t\t\t请输入用户密码: ");
for(i=0;i <=8;i++)
{
person[x].password[i]=getch();
if(person[x].password[9]== '\r ')
{
person[x].password[9]= '\0 ';
break;

}
else
{
printf( "* ");
}

}
printf( "\n\n\t\t\t\t请再次输入密码: ");
for(i=0;i <=8;i++)
{
pwd_temp[i]=getch();
if(pwd_temp[9]== '\r ')
{
pwd_temp[9]= '\0 ';
break;

}
else
{
printf( "* ");
}

}
pwd_temp[9] = '\0 ';
printf( "\nps=%s\n ",person[x].password);
//printf( "ps=%s\n ",pwd_temp);
re=strcmp(person[x].password,pwd_temp);
if(re!=0)
printf( "\n\n\t\t\t两次密码不一致,请重新输入!!!\n ");

[解决办法]
for(i=0;i <=8;i++)
{
person[x].password[10]=getch();//getch()每次读取一个字符,你赋值给谁啦?密码不想设置成8位怎么办?


if(person[x].password[10]== '\r ')//你这样比较有意义吗?i <=8!!!!
{
person[x].password[10]= '\0 ';
break;

}
else
{
printf( "* ");
}

}
[解决办法]
if(person[x].password[10]== '\r ')//你这样比较有意义吗?i <=8!!!!
这一句还存在内存溢出,password一共10位,你取password[10]是不是溢出?

热点排行