C语言怎么使用密码输入,也就是输入回显星号。

 我来答
toddlxt
推荐于2016-06-09 · TA获得超过528个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:219万
展开全部
用for 语句和getch( );putchar (‘*’);来实现的,而getch 不分区另ENTER和BACKSPACE等特殊键,不好控制它的结束。因此只有避过问题强行规定密码必须是8位的,但在输入密码时仍然不允许用户输入ENTER和BACKSPACE等特殊键。

以下程序功能:
接受所有打印字符。
不接受控制字符,如Ctrl+ ,Alt,F1等。

可使用退格键删除以输入字符。

回车键为密码输入完毕

可定义最大字符数。当输入字符数等于最大字符个数时,视为密码结束。

#include <stdio.h>
#include <conio.h>

#define TRUE 1
#define FALSE 0

#define MIN_INPUT 0x20
#define MAX_INPUT 0x7e

/*
* 所有功能有此函数实现:
* pszPw : 保存密码的缓冲
* iMaxSize :最大的密码长度,该长度必须小于缓冲区大小。
* 返回值为TRUE为成功获取密码。总是返回TRUE
*/
int GetPassword(unsigned char* pszPw,int iMaxSize)
{
unsigned char ch;
int i=0;

int bIsEcho=TRUE;

//while( ! kbhit() && i<iMaxSize )
while( ( ch = (unsigned char)getch() ) && i < iMaxSize )
{
//ch = (unsigned char)getch();
bIsEcho=TRUE;

if ( ch == 13)
{
pszPw[i++]=0;
break;
}
else if ( ch >= MIN_INPUT && ch <= MAX_INPUT) /*所有可打印字符*/
{
pszPw[i++]=ch;
}
else if ( ch == 8 && i> 0 ) /*退格键*/
{
pszPw[i--] = 0;
bIsEcho = FALSE;
putchar( ch );
putchar( ' ' );
putchar( ch );

}
else
bIsEcho = FALSE;

if(bIsEcho)
putchar('*');

}

pszPw[i]=0;
return TRUE;
}

int main(void)
{
int iMaxSize=80;
unsigned char pw[99];

if ( GetPassword(pw,iMaxSize) == TRUE ){
printf("\npassword=%s",pw);
}
else{
printf("\nCan not get the password!");
}
}
huang1986111
2008-06-15 · TA获得超过144个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:171万
展开全部
楼上的,谢谢,我也遇到过这样的问题,现在知道了,谢谢阿。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式