关于登陆密码问题

tuoluofu 2007-06-21 10:40:51
我把密码改为*之后就两次输入密码不一致了,请问为什么?

#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;
}

}
...全文
223 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cceczjxy 2007-06-22
  • 打赏
  • 举报
回复
if(person[x].password[10]=='\r')//你这样比较有意义吗?i<=8!!!!
这一句还存在内存溢出,password一共10位,你取password[10]是不是溢出?
cceczjxy 2007-06-22
  • 打赏
  • 举报
回复
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("*");
}

}
bargio_susie 2007-06-21
  • 打赏
  • 举报
回复
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");
Inhibitory 2007-06-21
  • 打赏
  • 举报
回复
两次密码不一致,说明密码被修改了,跟踪,输出密码看一下.

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧