鱼C论坛

 找回密码
 立即注册
查看: 1013|回复: 1

写的一个简单的小项目出现了问题,键盘输入无法进入下一阶段。和大家交流下解决思!!

[复制链接]
发表于 2020-7-14 09:04:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/* 1.使用结构体将用户名和密码进行存储
实现用户查看、用户管理功能:
0)查看所有用户
1)修改用户名
2)修改密码 */
#include<stdio.h>
#include<string.h>
struct user
{
        char name[20];
        char pwd[20];
};//定义结构体
struct user check[20]={{"pea1","123456"},{"pea2","1234567"},{"pea3","12345678"}
       
};//定义全局变量

int check_name_pwd(void)//封装函数检查用户名和密码是否匹配
{               
        int i;
        int countx1=0;
        int countx2=0;
        char user_[20]={0};//输入的用户名
        char pwd_[20]={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[i].name)==0&&strcmp(pwd_,check[i].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[20]={0};//修改的新用户名
                char pwd1[20]={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[k].name);
                        }
                }
                if(k==1)//功能菜单1
                {
                        printf("请输入指令修改对应的用户名\n");
                        for(f=0;f<3;f++)
                        {
                                printf("%d:%s\n",f,check[k].name);
                        }
                        scanf("%d",&g);
                        printf("请输入用户名\n");
                        scanf("%s",name1);
                        bzero(check[g].name,20);
                        strncpy(name1,check[g].name,sizeof(name1));                       
                }
                if(k==2)//功能菜单2
                {
                        printf("请输入指令修改对应的用户名的密码\n");
                        for(f=0;f<3;f++)
                        {
                                printf("%d:%s\n",f,check[f].pwd);
                        }
                        scanf("%d",&g);
                        printf("请输入用户名\n");
                        scanf("%s",pwd1);
                        bzero(check[f].pwd,20);
                        strncpy(pwd1,check[g].pwd,sizeof(pwd1));
                }       
        }
        return 0;       
}



//代码没有语法错误,逻辑错误预计在函数check_name_pwd(void)段输入位置。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-14 09:51:06 | 显示全部楼层
问题已经解决了
while(getchar()!='\0');//清空缓存区改成 while(getchar()!='\n');//清空缓存区
问题就解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 16:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表