声明:本程序转载自http://jingyan.baidu.com/article/f71d60379ab3061ab641d10e.html
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
int main()
{
char passWord[20];
printf("请输入密码:\n");
getpasswd(passWord, 20);
printf("\n");
printf("你输入的密码是:%s\n",passWord);
}
/*
自己写的getch()函数,原本此函数在linux下用不了
*/
int mygetch()
{
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;
}
/*
获取密码
*/
int getpasswd(char* passwd, int size)
{
int c;
int n = 0;
do
{
c=mygetch();
if (c != '\n'&& c!='\r' && c!=127)
{
passwd[n] = c;
printf("*");
n++;
}
else if ((c != '\n'|c!='\r')&&c==127)//判断是否是回车或者是退格
{
if(n>0)
{
n--;
printf("\b \b");//输出退格
}
}
}while(c != '\n' && c !='\r' && n < (size - 1));
passwd[n] = '\0'; //消除一个多余的回车
return n;
}