c语言输入密码并将密码掩盖住

本文介绍了一种使用C语言在Windows控制台中隐藏密码输入的方法,通过获取和设置光标位置,实现密码字符的星号替代显示,同时处理了退格键操作,确保用户输入的安全性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程

 废话不多说,请看正文!

 

#include <stdio.h>
#include<windows.h>
#include<stdlib.h>

//获取光标的位置x
int wherex()
{
    CONSOLE_SCREEN_BUFFER_INFO pBuffer;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &pBuffer);
    return (pBuffer.dwCursorPosition.X+1);
}
//获取光标的位置y
int wherey()
{
    CONSOLE_SCREEN_BUFFER_INFO pBuffer;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &pBuffer);
    return (pBuffer.dwCursorPosition.Y+1);
}
//设置光标的位置
void gotoxy(int x,int y) 
{
    COORD c;
    c.X=x-1;
    c.Y=y-1;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
} 

void main()
{
    int i,j;
	int x,y;
	char ch[20];
    printf("密码:");
	i = -1;
	do
	{		
		i++;
		ch[i]=getch();  //输入密码。
		while(ch[i]==8&&i>=0) //删除键时将前面的*号用空白掩盖。
		{
		   i--;
		   if(i>=0)
		   {
		   x=wherex();
	       y=wherey();
		   gotoxy(x-1,y);
		   printf(" ");
		   x=wherex();
	       y=wherey();
		   gotoxy(x-1,y);
		   }
		   ch[i]=getch();	  
		}
		if(i>=0&&ch[i]!=13&&ch[i]!=8)
		{
		x=wherex();
	    y=wherey();
		gotoxy(x,y);
		printf("*");   //将输入的密码位置用*号掩盖。
		
		}
		
	}while(ch[i]!=13);  //当输入回车键时退出输入。
	ch[i]='\0';
	printf("\n\n\n%s\n\n",ch);	
}

上面的代码运行如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zpeien

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值