C语言中密码输入问题!
C语言中如何实现输入密码?(在输入时显示为*号.)
你说是用标准C吧? 这个问题很是新颖,我也费了番工夫去想。因为在C语言中不像VC与VB等可视化的编译系统,他好像没有提供这种函数(我没有找到) 我想有一种方法可以大概的实现它。用for 语句和getch( );putchar (‘*’);来实现的,而getch 不分区另ENTER和BACKSPACE等特殊键,不好控制它的结束。因此只有避过问题强行规定密码必须是8位的,但在输入密码时仍然不允许用户输入ENTER和BACKSPACE等特殊键。 我已用这种方法试验过,结果与问题正如上面所述。你也不妨一试。
去请教专家
自己写个函数,使用getch读取键盘输入,只接收那些密码允许的字符。没接受到一个合法的字符就再屏幕上输出一个“*”。
参考: 以下程序功能: 接受所有打印字符。 不接受控制字符,如Ctrl+ ,Alt,F1等。 可使用退格键删除以输入字符。 回车键为密码输入完毕 可定义最大字符数。当输入字符数等于最大字符个数时,视为密码结束。 #include #include #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= MIN_INPUT && ch 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!"); } } 。