linux c 隐藏密码,Linux C 实现密码的密文输入,*输出,可删除

window情况下可以使用getch()函数(不回显),然后再用printf或是putchar函数输出*用以模仿输入*

但由于该函数包含在 头文件下,而在linux、Unix环境下往往不包含此头文件

这里可以考虑使用函数

getpass("")

来实现无回显输入

举例

while(ch_password= '\n') //无回显,然后将getpass返回的数组函数复制到自己的密码数组中

{

ch_password=getpass("Input a password");

strcpy(msg.password,ch_password);

}

但不会输出*,也无法删除

如果想以***代替密码,并且具有删除功能怎么办呢

这里再介绍两个linux 系统函数

system("stty -icanon");                   //设置一次性读完操作,即getchar()不用回车也能获取字符

system("stty -echo");                     //关闭回显,即输入任何字符都不显示

那么上述功能便容易实现了

void handle_password(char *password) //一维数组指针

{

int i=0;

system("stty -icanon"); //设置一次性读完操作,即getchar()不用回车也能获取字符

system("stty -echo"); //关闭回显,即输入任何字符都不显示

while(i < 20) //20假设密码长度不超过20

{

password[i]=getchar(); //获取键盘的值到数组中

if(i == 0 && password[i] == BACKSPACE)

{

i=0; //空密码情况

pass[i]='\0';

continue;

}

else if(password[i] == BACKSPACE)

{

printf("\b \b"); //删除情况,光标前移

password[i]='\0';

i=i-1; //返回到前一个值继续输入

continue; //结束当前循环

}

else if(password[i] == '\n') //回车键结束

{

password[i]='\0';

break;

}

else

{

printf("*");

}

i++;

}

system("stty echo"); //开启回显

system("stty icanon"); //关闭一次性读完操作

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值