我想在用 *
编写密码时屏蔽我的密码。我对这段代码使用 Linux GCC。我知道一种解决方案是使用 getch()
像这样的功能
#include <conio.h>
int main()
{
char c,password[10];
int i;
while( (c=getch())!= '\n');{
password[i] = c;
printf("*");
i++;
}
return 1;
}
但问题是 GCC
不包括 conio.h
文件,所以 getch()
对我没用。有没有人有办法解决吗?
原文由 Hit‘s 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Linux 世界中,通常不使用星号进行屏蔽,通常只是关闭回显并且终端显示空白例如,如果您使用
su
或登录到虚拟终端等。有一个库函数来处理获取密码,它不会用星号掩盖密码,但会禁用将密码回显到终端。我把它从我有的一本 linux 书里拿出来了。我相信它是posix标准的一部分
ssize_t my_getpass (char **lineptr, size_t *n, FILE *stream) { struct termios old, new; int nread;
}
”`
如果需要,您可以以此为基础修改它以显示星号。