C语言——模拟密码输入(不回显)

我在以前的C语言课程设计中做过民政局婚姻管理系统、导游系统。其中包含游客登录和管理员登录功能,但是自己的密码显示做的有问题,密码系统也做得不尽人意。
在这篇博客里,先把密码显示贴在下面,等过几天,把自己的密码系统完善之后再做一篇博客细讲。

带“*”无回显的密码显示代码如下:

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#define PWD_SIZE 18

void Key(char *key, int SIZE);

int main(){
    char key[PWD_SIZE+1];
    printf("请输入密码: ");
    Key(key, PWD_SIZE);
    printf("你输入的密码是: %s\n", key);
    return 0;
}
void Key(char *key, int SIZE)
{
    char ch;
    int i = 0;
    while(i<SIZE)
    {
        ch = getch();
        if(ch == '\r')
        {  //回车结束输入
            printf("\n");
            break;
        }
        if(ch=='\b' && i>0)
        {  //按下删除键
            i--;
            printf("\b \b");
        }
        else if(isprint(ch))
        {  //输入可打印字符
            key[i] = ch;
            printf("*");
            i++;
        }
    }
    key[i] = 0;
}

函数的参数key表示为保存密码的内存的首地址,SIZE表示密码的最大长度。

函数通过while循环不断读取用户输入的字符,然后将进行处理:

  • 按下回车键,表示输入结束,getch()读取到\r;
  • 按下删除键,表示删除一个字符,getch()读取到\b;
  • 输入可打印字符,读取该字符并回显*

需要注意的是,getchar()将读取\n字符,getch()将读取到\r字符。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值