06Linuxwuliqiang.blog.chinaunix.net
linux_wuliqiang
业精于勤,荒于嬉
全部博文(763)
生活小常识(7)
git(3)
Socket(12)
Bash(1)
命令(Commond)(7)
服务器(32)
Linux内核(0)
vi_gcc_gdb_emacs(3)
Makefile(8)
C++容器(7)
项目管理(0)
代码管理(3)
Android(18)
MTK(3)
Iphone(109)
Symbian(0)
点阵字库(3)
环境搭建(1)
寻路算法(2)
字库相关(2)
Unity3D(17)
MD2_3D动画显示(1)
地图相关(11)
Hge Engine(0)
Cocos2d(14)
文件解析(3)
图片解析(11)
OpenGL(53)
游戏架构(1)
ECMAScript(1)
Flash(0)
Html5(11)
Jsp(6)
Eclipse(4)
J2ee_project(0)
文件上传(0)
UI(0)
J2ME(14)
reportTable(0)
2018年(6)
2017年(15)
2016年(2)
2015年(31)
2014年(14)
2013年(87)
2012年(75)
2011年(94)
2010年(190)
2009年(38)
2008年(183)
2007年(28)
Tay_linu
niao5929
shencz20
qssjh035
mugua250
youngmam
xixichen
CU官方博
commshar
leonlinl
leleston
smile124
甜菜妙妙
test1
xinshou6
bingor
speed
格伯纳
分类: C/C++
2009-02-09 22:10:30
/** 定义函数 char * GetPassword(char* _pPassword, int _nLen, char _chShow);* 表头文件 #include * 函数描述 密码读取函数,从终端度取密码。* _pPassword 要有足够的空间来容纳读取的密码。* _nLen 限制密码的最大长度* _chShow 为输入密码后回显的字符。值为 0 时不回显。* 返回值 返回 _pPassword 的字符串起始地址。 * 作 者 武立强* 时 间 2009-02-08* 注 意 \b Backspace \n Newline \r Carriage return * getch() 读取一个字符,不回显.*/char * GetPassword(char* _pPassword, int _nLen, char _chShow){ assert( NULL != _pPassword ); int nCourrent = 0; char * pFirst = _pPassword; while(1) { *_pPassword = getch(); if( '\n' == *_pPassword || '\r' == *_pPassword ) { *_pPassword = '\0'; break; } else if( '\b' == *_pPassword && 0 == nCourrent ) { continue; } else if( '\b' == *_pPassword && 0 == _chShow ) { _pPassword--; nCourrent--; continue; } else if( '\b' == *_pPassword ) { _pPassword--; nCourrent--; printf("\b \b"); // 注意细节,中间有个空格 continue; } else if( nCourrent >= _nLen ) { continue; } // 是否回显 if( 0 != _chShow ) { printf("%c", _chShow); } _pPassword++; nCourrent++; } _pPassword = NULL; return pFirst;}
上一篇:计算大使 (我的小练习)
下一篇:StringReplace
登录 注册