linux下的getch实现,获取密码
#ifndef _WIN32//非windows下getch处理
int getch()
{
struct termios oldt, newt;
int ch;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
return ch;
}
#endif
//获取密码,密码字符串pwd和pwd长度pwd_len
void getpwd(char* pwd,int pwd_len)
{
int i = 0;
char let = 0, ch = '*';
while (i <= pwd_len && let != '\r'&&let != '\n')
{
let = getch();
if (let != '\b'&&let != 127)
{
pwd[i++] = let;
putchar(ch);
}
else
{
if (i>0)
{
pwd[--i] = 0;
putchar('\b');
putchar(' ');
putchar('\b');
}
}
}
if (let != '\n')
--i;
pwd[i] = 0;
putchar('\b');
putchar(' ');
putchar('\b');
}