📄 p9-5-6.c
字号:
#include <stdio.h>#include <termios.h>#include <unistd.h>#define MAX_PASS_LEN 8char * getpass(const char *prompt) { struct termios oldterm,newterm; static char passwd[MAX_PASS_LEN+1]; char *ptr ; FILE *fp; int echo_off, c; /* 为读写打开终端 */ if((fp = fopen(ctermid(NULL), "w+")) == NULL) return NULL; /* 保存终端当前设置 */ tcgetattr(fileno(fp), &oldterm); newterm = oldterm; /* 关闭回显和忽略终端生成的信号 */ newterm.c_lflag &= ~(ECHO | ISIG); echo_off = tcsetattr(fileno(fp), TCSAFLUSH, &newterm) == 0; /* 提示请求口令 */ fputs(prompt, fp); /* 读入口令 */ ptr = passwd; while ((c = getc(fp)) != EOF && c != '\n') if (ptr < &passwd[MAX_PASS_LEN]) *ptr++ = c; *ptr = 0; /* 用null结尾 */ putc('\n', fp); /* 回显一换行 */ /* 恢复终端原设置 */ tcsetattr(fileno(fp), TCSAFLUSH, &oldterm); fclose(fp); /* 关闭终端文件 */ return passwd;}int main(void){ char *ptr; ptr = getpass("Enter password:"); printf( "You entered: %s\n",ptr); exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -