在C语言中,如何做到在用户输入密码时不显示密码本身,只回显星号。或者什么都不显示?
最新推荐文章于 2025-04-25 12:01:04 发布
原创
最新推荐文章于 2025-04-25 12:01:04 发布
·
1.1w 阅读
·
11
·
59
·
CC 4.0 BY-SA版权
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
文章标签:
#C语言输入密码不显示密码只回显星号
#输入密码时什么都不显示
C语言
专栏收录该内容
50 篇文章
订阅专栏
本文介绍如何使用C语言实现密码输入时不显示密码本身,而是回显星号或完全隐藏输入过程的方法。通过getch()函数读取键盘输入,结合字符处理函数实现密码的安全输入。
摘要生成于
C知道
,由 DeepSeek-R1 满血版支持,
前往体验 >
在C语言中,如何做到在用户输入密码时不显示密码本身,只回显星号。或者什么都不显示?
我们调用一个函数getch(),它包含在头文件中。该函数可以在输入的同时不显示输入内容,并在输入完成后不需回车而自动终止输入。与此同时,该头文件中还包含另外一个函数getche(),它和getch()功能相同,唯一的区别是输入的同时显示输入的内容。本文我们只用到getch();
推荐算法:
#include
#include
void main()
{
char str[6]={NULL};
int i;
printf("请输入5位密码:\n");
for(i=0;i<5;i++)
{
str[i]=getch();
printf("*");
}
str[i]='\0';
printf("\n您输入的是: %s\n",str);
}
[cpp] view plain copy
#include
#include
#include
#include
int main()
{
int n,p;
char ch,acnt[256],pwd[256];
scanf("%d",&n);
while(n--)
{
system("cls");//清屏
p=0;
puts("请输入账号:");
scanf("%s%*c",acnt);
puts("请输入密码:");
while((ch=getch())!='\r')//判断是否是回车
{
if(ch==8)//实现backspace键的功能,其中backspace键的ascii码是8
{
putchar('\b');
putchar(' ');
putchar('\b');
if(p>0)//最多只能删到没有字符
p--;
}
if(!isdigit(ch)&&!isalpha(ch))//判断是否是数字或字符
continue;
putchar('*');//在屏幕上打印星号
pwd[p++]=ch;//保存密码
}
pwd[p]=0;//结束字符串
printf("\n账号:\n%s\n密码:\n%s\n",acnt,pwd);
p=0;
system("pause");
}
return 0;
}
一、输入密码回显星号
#include
#include
#include
#define MAX_PASSWD_LEN 16
char passwd[MAX_PASSWD_LEN + 1] = "";
char *GetPasswd()
{
unsigned char c;
int i = 0;
while ((c=getch())!='\r')
{
if (i { passwd[i++] = c; putchar('*'); } else if (i>0 && c=='\b') { --i; putchar('\b'); putchar(' '); putchar('\b'); } } putchar('\n'); passwd[i] = '\0'; return passwd; } 二、输入密码不回显 与回显星号的代码基本相同,只是去掉打印输出的代码。 #include #include #define MAX_PASSWD_LEN 16 char passwd[MAX_PASSWD_LEN + 1] = ""; char *GetPasswd() { unsigned char c; int i = 0; while ((c=getch())!='\r') { if (i { passwd[i++] = c; } else if (i>0 && c=='\b') { --i; } } passwd[i] = '\0'; return passwd; }