Linux操作系统的控制台程序,可以通过修改stdin的配置,来达到关闭回显的目的。
#include <stdio.h>
#include <termios.h>
int main(){
//获取stdin的termios结构体
//关掉回显并保存
//打开回显并保存
struct termios settings;//创建一个termios结构体,用来保存stdin的配置
char password[32];
tcgetattr(fileno(stdin),&settings);//获取配置信息
printf("此时c_lflag的值是:%d\n",settings.c_lflag);
settings.c_lflag &= ~ECHO;//修改termios结构体的ECHO属性
tcsetattr(fileno(stdin),TCSANOW,&settings);//保存配置
printf("此时c_lflag的值是:%d\n",settings.c_lflag);
printf("password:\n");
fgets(password,32,stdin);
settings.c_lflag |= ECHO;
tcsetattr(fileno(stdin),TCSANOW,&settings);
printf("此时c_lflag的值是:%d\n",settings.c_lflag);
printf("输入的password是:%s\n",password);
}
效果如下: