linux密码带星号,Linux下实现输入密码以星号显示
#include
#include
#include
#include
#include
#include
char Getch()
{
int c = 0;
int res = 0;
struct termios org_opts, new_opts;
res = tcgetattr(STDIN_FILENO, &org_opts); //用于獲取與終端相關的參數
if(res == -1)
{
printf("tcgetattr error! Error code: %d,Error message: %s\n", errno, strerror(errno));
c = '\n';
return c;
}
memcpy(&new_opts, &org_opts, sizeof(new_opts));
new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);
res = tcsetattr(STDIN_FILENO, TCSANOW, &new_opts); //用于設置終端參數
if(res == -1)
{
printf("tcsetattr error! Error code: %d,Error message: %s\n", errno, strerror(errno));
c = '\n';
return c;
}
c = getchar();
res = tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);
if(res == -1)
{
printf("tcsetattr error! Error code: %d,Error message: %s\n", errno, strerror(errno));
c = '\n';
return c;
}
return c;
}
char *GetPasswd()
{
char *strRet = (char *)malloc(64);
memset(strRet, 0, 64);
unsigned char c;
int i = 0;
while ((c = Getch()) != '\n')
{
if (i<64 && isprint(c))
{
strRet[i++] = c;
putchar('*');
}
else if ((i>0) && (c == '\b'))
{
--i;
putchar('\b');
putchar(' ');
putchar('\b');
}
}
strRet[i] = '\0';
return strRet;
}
int main()
{
printf("\n輸入的密碼為:%s\n",GetPasswd());
return 0;
}
總結
以上是生活随笔為你收集整理的linux密码带星号,Linux下实现输入密码以星号显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子科技大学 高级计算机结构,电子科技大
- 下一篇: java int 和 long比较大小会