写的一个简单的小项目出现了问题,键盘输入无法进入下一阶段。和大家交流下解决思!!
/* 1.使用结构体将用户名和密码进行存储实现用户查看、用户管理功能:
0)查看所有用户
1)修改用户名
2)修改密码 */
#include<stdio.h>
#include<string.h>
struct user
{
char name;
char pwd;
};//定义结构体
struct user check={{"pea1","123456"},{"pea2","1234567"},{"pea3","12345678"}
};//定义全局变量
int check_name_pwd(void)//封装函数检查用户名和密码是否匹配
{
int i;
int countx1=0;
int countx2=0;
char user_={0};//输入的用户名
char pwd_={0};//输入的密码
printf("请输入用户名\n");
scanf("%s",user_);
while(getchar()!='\0');//清空缓存区
/* printf("%s\n",user_); */
printf("请输入密码\n");
scanf("%s",pwd_);
while(getchar()!='\0');//清空缓存区
/* printf("%s\n",pwd_); */
for(i=0;i<3;i++)
{
if(strcmp(user_,check.name)==0&&strcmp(pwd_,check.pwd)==0)
{
countx1++;
countx2++;
break;
}
}
return countx1+countx2;
}
int main(void)
{
int j=1;
while(1) //用户登录功能
{
if(check_name_pwd()!=2)//调用函数判断用户名和密码是否匹配
{
printf("用户名或密码错误!请重新输入\n");
printf("第%d次错误\n",j);
printf("3次后退出\n");
if(j==3)//3次错误后退出程序
{
printf("第3次错误再见!\n");
return 0;
}
j++;
}
else
{
printf("welcome to pea's home\n");
break;
}
}
while(1)
{
int k,f,g,cmd;
char name1={0};//修改的新用户名
char pwd1={0};//修改指定用户名对应的密码
printf("请输入指令\n");
printf("0查看所有用户\n1修改用户名\n2修改密码");
scanf("%d",&cmd);
if(k==0)//功能菜单0
{
for(f=0;f<3;f++)
{
printf("%d:%s\n",k+1,check.name);
}
}
if(k==1)//功能菜单1
{
printf("请输入指令修改对应的用户名\n");
for(f=0;f<3;f++)
{
printf("%d:%s\n",f,check.name);
}
scanf("%d",&g);
printf("请输入用户名\n");
scanf("%s",name1);
bzero(check.name,20);
strncpy(name1,check.name,sizeof(name1));
}
if(k==2)//功能菜单2
{
printf("请输入指令修改对应的用户名的密码\n");
for(f=0;f<3;f++)
{
printf("%d:%s\n",f,check.pwd);
}
scanf("%d",&g);
printf("请输入用户名\n");
scanf("%s",pwd1);
bzero(check.pwd,20);
strncpy(pwd1,check.pwd,sizeof(pwd1));
}
}
return 0;
}
//代码没有语法错误,逻辑错误预计在函数check_name_pwd(void)段输入位置。 问题已经解决了
while(getchar()!='\0');//清空缓存区改成 while(getchar()!='\n');//清空缓存区
问题就解决了
页:
[1]