密码,输入时不应可见(星号应可见,而不是字符)。能不能像我们用JAVA那样用C来实现。
最佳答案
使用 Linux 平台和终端,您必须修改终端行为、禁用回显并使用非规范模式
#include <termios.h>
#include <stdio.h>
#include <stdbool.h>
static struct termios oldPar, newPar;
void initTermios(bool echo) {
tcgetattr(0, &oldPar);
newPar = oldPar;
newPar.c_lflag &= (tcflag_t)~ICANON;
newPar.c_lflag &= echo ? (tcflag_t)ECHO : (tcflag_t)~ECHO;
tcsetattr(0, TCSANOW, &newPar);
}
void resetTermios(void) {
tcsetattr(0, TCSANOW, &oldPar);
}
char getch_(bool echo) {
int ch;
initTermios(echo);
ch = getchar();
resetTermios();
return (char)ch;
}
char getch(void) {
return getch_(false);
}
int main(void) {
char c;
char psw[16] = { 0 };
size_t index = 0;
printf("Insert password: ");
do
{
c = getch();
printf("*");
psw[index++]= c;
}
while ((index < (sizeof(psw)-1)) && (c!='\n'));
printf("\n\nPassword: %s\n", psw);
return 0;
}
关于c - C 中是否有任何机制可以从用户那里获取密码,就像我们在 JAVA 中作为密码字段一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41848193/