linux下实现密码隐藏,非系统getch

#include <stdio.h>
#include <string.h>
#include <unistd.h>

# include<termios.h>
# include<assert.h>
int getch()
{
	int c=0;
	struct termios org_opts, new_opts;
	int res=0;

	res=tcgetattr(STDIN_FILENO, &org_opts);
	assert(res==0);
	memcpy(&new_opts, &org_opts, sizeof(new_opts));
	new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT     | ECHOKE | ICRNL);
	tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);
	c=getchar();
	res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);
	assert(res==0);
	return c;
}


int main()
{
	int i = 0;
	char passwd[20] = {0};
	for(i=0;;i++)
	{
		passwd[i]=getch();
		if(passwd[i]=='\n')
		{
			passwd[i]='\0';
			break;
		}
		if(passwd[i]==19)
		{
			printf("\b \b");
			i=i-2;
		}
		else
			printf("*");
		if(i<0)
			passwd[0]='\0';
	}

	int len = 0;
	len = strlen(passwd);
	printf("\n%d\n",len);

	int ret = 0;
	ret = strcmp(passwd,"123456");
	printf("%d\n",ret);

	printf("%s\n",passwd);
	return 0;

#if 0
	char *pass={"请输入管理员的密码:"};
	char *pa;
	pa=getpass(pass);//pa已经得到了你输入的密码
	printf("%s\n",pa);//打印密码
	//return 0;
#endif

#if 0
	char *passwd = NULL;

	passwd = getpass("");

	printf("%s\n",passwd);
	int len = 0;
	len = strlen(passwd);
	printf("%d\n",len);

	int ret = 0;
	ret = strcmp(passwd,"123456");
	printf("%d\n",ret);
#endif

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值