C++输入密码时显示*,可以删除输入字符

需要使用#include <conio.h> 头文件,这个头文件中

说明:

1、getch()函数功能:在windows平台下从控制台无回显地取一个字符。

      用法 int getch(void) 。

     返回值 从键盘上读取到的字符。

2、 putch()函数功能: 在当前光标处向文本屏幕输出字符ch,然后光标自动右移一个字符位置。
用 法: int putch(char ch),其中参数ch为要输出的字符。

返回值:如果输出成功,函数返回该字符;否则返回EOF。

3、几个常用键的ascii码:

回车键: VK_RETURN (13)     

空格键: VK_SPACE ($20/32)

退格键: VK_BACK (8)

//输入密码是显示为*
int retpassword_input(){
    char pass[7];
    char passconfirm[7];
    int password_convert = 0;
    int i=0;
    cout<<"请输入6位数密码:";
    //13代表回车键 回车键: VK_RETURN (13) 空格键: VK_SPACE ($20/32) 退格键: VK_BACK (8)
    while((pass[i]=getch())!= 13){
        if (pass[i] == 8)//退格键
        {
            cout << "\b";
            cout << " ";
            cout << "\b";
            //putchar('\b');//这里是删除一个,我们通过输出回撤符 /b,回撤一格,
            //putchar(' ');//再显示空格符把刚才的*给盖住,
            //putchar('\b');//然后再 回撤一格等待录入。
            i--;
        }

        else if('0' <= pass[i] && pass[i] <= '9' ){
            putch('*');
		    i++;
        }

	}
	pass[i]='\0';
	i=0;
	cout<<"\n请确认密码:";
	while((passconfirm[i]=getch())!= 13)
	{
	    if (pass[i] == 8)
            {
                cout << "\b";
                cout << " ";
                cout << "\b";
            //putchar('\b');//这里是删除一个,我们通过输出回撤符 /b,回撤一格,
            //putchar(' ');//再显示空格符把刚才的*给盖住,
            //putchar('\b');//然后再 回撤一格等待录入。
                i--;
            }
	    else if('0' <= passconfirm[i] && pass[i] <= '9' )
            {
                putch('*');
		i++;
            }
	}
	passconfirm[i]='\0';
	if(strcmp(pass,passconfirm)==0)
	{
	    cout<<"\n恭喜您开户成功"<< endl;
            for(int j = 0; j < 6 ; j++)
            {
            //这里注意字符转换为数字时是以ASCII转化的,'0'=49
                password_convert = password_convert*10 + (int)passconfirm[j] - 48;
	    }
	    cout<< "您的密码是:" << password_convert << endl;
	}
	else
	{
            cout<<"\n两次密码不一致,请重新输入.\n";
	    retpassword_input();
	}
    return password_convert;

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值