我想学代码a 2021-01-17 15:46 采纳率: 0%
浏览 7

如何利用题给条件改动,使函数产生密码不回显功能?

#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>

int main()
{
    char name[]="ad",password[]="1234";
    char user[100],psw[100];
    do{                             //如果用户名或者密码任一个错误,重新在输入
        printf("请输入用户名:");
        gets(user);                  //输入用户名字符串
        strlwr(user);                //将输入的字符串全部转化为小写
        printf("请输入密码:");
        gets(psw);                    //输入密码字符串
        if(strcmp(name,user)!=0||strcmp(password,psw)!=0)
        printf("用户名和密码错误,请重新输入!\n");
    }while(strcmp(name,user)!=0||strcmp(password,psw)!=0);
    printf("\n欢迎您 :%s",user);
    return 0;
}

如何利用以下给的条件进行密码不回显的代码输出?

1、psw[i]=getch();  //输入的字符存储在psw[i]中,不回显
2、putch('*');     //输入一个'*'字符来在屏幕上代替刚输出的字符
3、psw[i]='\0';      //在字符串的尾部加上'/0'

怎样将这几个代码加进去,得到密码不回显的要求?

  • 写回答

1条回答 默认 最新

  • a5156520 2023-03-24 14:57
    关注

    加上相应头文件,再把相应代码修改后放在获取密码字符串的位置即可.

    修改如下:

    参考链接:


    
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h> 
     
    int main()
    {
        char name[]="ad",password[]="1234";
        char user[100],psw[100];
        int i=0;
        do{                             //如果用户名或者密码任一个错误,重新在输入
            i=0;
            printf("请输入用户名:");
            gets(user);                  //输入用户名字符串
            strlwr(user);                //将输入的字符串全部转化为小写
            printf("请输入密码:");
            //gets(psw);                    //输入密码字符串
            
            // https://blog.csdn.net/qq_45571006/article/details/123327524
            psw[i]=getch();  //输入的字符存储在psw[i]中,不回显
            if(psw[i]!=13){  // 如果输入的不是回车,则回显 
                putch('*');     //输入一个'*'字符来在屏幕上代替刚输出的字符
            } 
            
            
           // http://ascii.wjccx.com/     
            while(psw[i]!=13){  // 如果没有输入回车,则将字符存于密码字符数组中 
            //    printf("psw[%d]=%c,%d\n",i,psw[i],psw[i]);
            
                i++;   // 指向密码字符数组下一个字符位置 
                psw[i]=getch();  //输入的字符存储在psw[i]中,不回显
                if(psw[i]!=13){  // 如果输入的不是回车,则回显 
                    putch('*');     //输入一个'*'字符来在屏幕上代替刚输出的字符
                } 
                
                
            }
        //    printf("psw[%d]=%c,%d\n",i,psw[i],psw[i]);
            psw[i]='\0';      //在字符串的尾部加上'/0'
            
            if(strcmp(name,user)!=0||strcmp(password,psw)!=0)
                printf("\n用户名和密码错误,请重新输入!\n");
        }while(strcmp(name,user)!=0||strcmp(password,psw)!=0);
        printf("\n欢迎您 :%s",user);
        return 0;
    }
    

    img

    评论 编辑记录

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?