密码输入的非回显法

本文介绍了一种使用C++实现的密码输入方式,该方法在用户输入密码时仅显示星号(*),增强了安全性。同时,文章也提到了当前实现的一个限制:无法支持密码的倒退删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近偶然被问到一个问题,输入密码时怎么不回显输入的字符,而只显示*号。虽然只是一个小问题,但觉得有必要重视一下,个人解决方案如下:

//添加头文件
#include<conio.h>
#include<string.h>

int i = 0;
char password[10];  //数组大小自定

//当输入的不是回车符时,就把输入的字符赋给数组的第i+1个位置
while((password[i]=getch())!='\r')                        
{
  cout<<"*";  //每输入一个字符,就显示一个*号
  i++;
}

//当输入回车符时一定要把字符串结束符赋给数组最后一个位置
password[i] = '\0'; 

//当输入的字符串与设定密码一致时执行其他语句...
if(strcmp(password, "2010") == 0)
{
  ...
  ...
}

  但到这还是有个问题,我的程序可以在输入密码时可以只显示*号,但是不能倒退删除输入的字符,比如说我想输入123,但输成了132,屏幕显示的是***,我想删掉32,但显示的是******了,暂时还没找到有效的解决办法。
### 大学C语言课程设计示例项目题目 以下是一些与大学C语言课程设计相关的示例项目题目,这些题目可以帮助学生掌握C语言的基本概念、算设计以及实际问题的解决能力[^1]。 1. **分屏处理数据系统** 随机产生1000个数,并分屏示(每行示10个数字,每页示10行),且在每一屏的下方示本屏中数据的最大值、最小值和平均值。附加要求:能够前后循环翻页,且输入页码可以回显该页码数据,如果页码错误默认到第一页[^1]。 2. **隐私信息管理系统** 设计一个系统用于存储用户的隐私信息,如用户名、密码、银行卡号等。采用密文存储方式,即将密码明文加密成密文后进行存储。加密方可以自行设计,例如通过ASCII值加一个整数值实现加密[^5]。 3. **图书管理系统** 设计一个简单的图书管理系统,包括图书的添加、删除、查询、修改等功能。可以通过文件存储图书信息,使用结构体表示图书的属性[^4]。 4. **学生成绩管理系统** 开发一个学生成绩管理系统,支持录入学生的成绩、计算平均分、最高分、最低分等功能,并能将成绩保存到文件中以便后续读取和分析[^4]。 5. **计算器程序** 编写一个功能齐全的计算器程序,支持加减乘除、幂运算、开方等基本运算。程序应具备友好的用户界面,允许用户连续输入表达式并获得结果[^3]。 6. **迷宫游戏** 实现一个基于字符界面的迷宫游戏,玩家需要通过键盘控制角色移动,找到从起点到终点的路径。迷宫的地图可以用二维数组表示,游戏逻辑涉及递归或栈的使用[^4]。 7. **超市收银系统** 模拟超市的收银过程,包括商品条形码扫描、价格计算、折扣处理等功能。系统应支持多用户操作,记录交易日志并生成销售报表[^4]。 8. **员工工资管理系统** 设计一个员工工资管理系统,能够录入员工的基本信息(如姓名、工号、部门等)和工资信息(如基本工资、奖金、扣款等),并计算每个员工的最终工资。系统需支持数据的保存和加载[^3]。 ```python # 示例代码:简单的计算器程序 def calculator(): while True: print("选择操作:1. 加 2. 减 3. 乘 4. 除") choice = input("输入你的选择(1/2/3/4): ") if choice in ['1', '2', '3', '4']: num1 = float(input("输入第一个数字: ")) num2 = float(input("输入第二个数字: ")) if choice == '1': print(f"{num1} + {num2} = {num1 + num2}") elif choice == '2': print(f"{num1} - {num2} = {num1 - num2}") elif choice == '3': print(f"{num1} * {num2} = {num1 * num2}") elif choice == '4': if num2 != 0: print(f"{num1} / {num2} = {num1 / num2}") else: print("除数不能为零!") else: print("无效输入,请重新选择!") cont = input("继续计算吗?(y/n): ") if cont.lower() != 'y': break calculator() ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值