吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2016|回复: 7
收起左侧

[C&C++ 转载] C语言学习之控制台密码输入【带回显】

[复制链接]
caoxiaolin 发表于 2020-9-25 22:06
C语言学习之控制台密码输入


自己写的一个控制台输入密码函数,可以隐藏,并且可以显示,在隐藏       新人 学习C语言


源码奉上

[C] 纯文本查看 复制代码
/*
	2020年9月25日21:50:28

*/

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

/*
	包含头文件
		stdio.h
		conio.h
		windows.h
	密码输入:
		英文、数字
		len_pd 密码长度 (字符数组的长度)
		str	字符数组指针
		例子:
			char password[17];
			Input_pd(17, password);
			输入一个长度最大为16个字符的密码 其中最后空间用于保存\0
			超过最大长度后自动退出
*/
void Input_pd(int len_pd, char* str); 

int main(void)
{
	
	char password[17];

	Input_pd(17, password);
	printf("\n你输入的密码为:%s\n", password);
	
	return 0;
}


void Input_pd(int len_pd, char* str)
{
	char* password;
	int n_input_pd = 0;
	
	len_pd -= 1;
	password = str;
	while (n_input_pd < len_pd)
	{

		password[n_input_pd] = _getch();
		
		/*
			自行添加
			if(输入验证)
			{
				return -1;
			}
		*/
		
		if (password[n_input_pd] == '\r')
		{
			break;
		}
		//删除功能 循环判断是否 连续删除
		while (password[n_input_pd] == '\b')
		{
			putchar('\b');
			putchar(' ');
			putchar('\b');
			if (n_input_pd) //判断是否减到0 如果是0 则不继续减少下标
				--n_input_pd;
			password[n_input_pd] = _getch(); //获取下一次的输入
			/*
				自行添加
				if(输入验证)
				{
					return -1;
				}
			*/
			
			if (password[n_input_pd] == '\r')
			{
				goto end;
			}
		}

		//回显
		putchar(password[n_input_pd]);
		//退格 打印*
		putchar('\b');
		Sleep(150);
		putchar('*');
		++n_input_pd;
	}
end:
	password[n_input_pd] = '\0'; //添加结束标记
	return;
}





效果

无标题项目.gif


哈哈,可不可以给点cb 穷的叮当响了

免费评分

参与人数 4吾爱币 +5 热心值 +2 收起 理由
兰笙c + 1 我很赞同!
双鱼兔 + 1 我草 你这是真的穷啊,我都忍不住给你搞一个
苏紫方璇 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
女萝岩 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ldw471427015 发表于 2020-9-25 22:55
简单明了
涛之雨 发表于 2020-9-25 22:56
写的很好,清晰明了。
但是没必要goto吧?
直接补齐字符串return就可以了吧?
哒劳德 发表于 2020-9-26 00:33
星号睡了150秒,有没有可以无限时间的,没有限制,不然你这个150秒就没用了呀
 楼主| caoxiaolin 发表于 2020-9-26 07:08
哒劳德 发表于 2020-9-26 00:33
星号睡了150秒,有没有可以无限时间的,没有限制,不然你这个150秒就没用了呀

你是说输入之后一直显示最后输入的哪个字符吗?
 楼主| caoxiaolin 发表于 2020-9-26 07:09
涛之雨 发表于 2020-9-25 22:56
写的很好,清晰明了。
但是没必要goto吧?
直接补齐字符串return就可以了吧?

多些指点,这个原来在main里面些的,现在改成函数分享出来,就没改
 楼主| caoxiaolin 发表于 2020-9-26 08:07
哒劳德 发表于 2020-9-26 00:33
星号睡了150秒,有没有可以无限时间的,没有限制,不然你这个150秒就没用了呀

不知道怎么让光标移回去,如果能移回去的话,每次输入直接显示,等下一次输入的时候移回光标输入*  然后在把光标移动到下次输入的位置就应该就可以了
xtyangl 发表于 2020-10-27 21:26
多些指点,这个原来在main里面些的,现在改成函数分享出来,就没改
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表