您的位置:首页 > 其它

[vc win32 console 模式适用]获取输入的密码,以*显示,并支持退格的函数

2009-09-08 21:25 204 查看
简要说明:

写控制台程序的时候有时候需要输入密码,以下示例程序可以支持用*代替输入,也支持退格,核心逻辑封装在getPassword函数中。

key:

1、getch() ->获得一个字符,但不输出到控制台上

2、'/r' -> 回车操作捕获

3、'/b' ->退格操作捕获

4、printf("/b /b");  ->这句比较经典,变的实现了清除输入的功能

 

 

#include <conio.h>
#include <string>
#include <iostream>
using namespace std;

void getPassword(char *desStr, int maxLen);
#define MAX_PASSWORD_LEN 256
char *rightPwStr = "123456";

int main(int argc, char* argv[])
{
printf("Enter Password : ");
char pwStr[MAX_PASSWORD_LEN] = {0};
getPassword(pwStr, MAX_PASSWORD_LEN);
string curStr = pwStr;
if (curStr.compare(rightPwStr))
{
printf("Password Incorrect!/n");
}
else
{
printf("Password Correct!/n");
}

return 0;
}

void getPassword(char *desStr, int maxLen)
{
int i = 0;
while (i < maxLen)
{
desStr[i] = getch();
// »ñÈ¡µ½»Ø³µ½áÊøÊÕ¼¯
if ('/r' == desStr[i] || '/n' == desStr[i])
{
putchar('/n');
break;
}
// Ö§³ÖºóÍ˲Ù×÷
else if ('/b' == desStr[i] && i > 0)
{
printf("/b /b");  // Í˸ñ£¬¿Õ¸ñÌæ´ú£¬Í˸ñ£¬Çå³ýÊäÈë
i--;
continue;
}
// ûÓÐÊäÈëʱ£¬²»¶ÔºóÍ˽øÐÐÏìÓ¦
else if ('/b' == desStr[i])
{
continue;
}

putchar('*');
i++;
}

desStr[i] = 0;
}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string