C语言学习之控制台密码输入【带回显】
C语言学习之控制台密码输入自己写的一个控制台输入密码函数,可以隐藏,并且可以显示,在隐藏 新人 学习C语言{:301_986:}
源码奉上
/*
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;
Input_pd(17, password);
输入一个长度最大为16个字符的密码 其中最后空间用于保存\0
超过最大长度后自动退出
*/
void Input_pd(int len_pd, char* str);
int main(void)
{
char password;
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 = _getch();
/*
自行添加
if(输入验证)
{
return -1;
}
*/
if (password == '\r')
{
break;
}
//删除功能 循环判断是否 连续删除
while (password == '\b')
{
putchar('\b');
putchar(' ');
putchar('\b');
if (n_input_pd) //判断是否减到0 如果是0 则不继续减少下标
--n_input_pd;
password = _getch(); //获取下一次的输入
/*
自行添加
if(输入验证)
{
return -1;
}
*/
if (password == '\r')
{
goto end;
}
}
//回显
putchar(password);
//退格 打印*
putchar('\b');
Sleep(150);
putchar('*');
++n_input_pd;
}
end:
password = '\0'; //添加结束标记
return;
}
效果
哈哈,可不可以给点cb 穷的叮当响了{:301_986:} 简单明了 写的很好,清晰明了。
但是没必要goto吧?
直接补齐字符串return就可以了吧? 星号睡了150秒,有没有可以无限时间的,没有限制,不然你这个150秒就没用了呀 哒劳德 发表于 2020-9-26 00:33
星号睡了150秒,有没有可以无限时间的,没有限制,不然你这个150秒就没用了呀
你是说输入之后一直显示最后输入的哪个字符吗? 涛之雨 发表于 2020-9-25 22:56
写的很好,清晰明了。
但是没必要goto吧?
直接补齐字符串return就可以了吧?
多些指点,这个原来在main里面些的,现在改成函数分享出来,就没改 哒劳德 发表于 2020-9-26 00:33
星号睡了150秒,有没有可以无限时间的,没有限制,不然你这个150秒就没用了呀
不知道怎么让光标移回去,如果能移回去的话,每次输入直接显示,等下一次输入的时候移回光标输入*然后在把光标移动到下次输入的位置就应该就可以了 多些指点,这个原来在main里面些的,现在改成函数分享出来,就没改
页:
[1]