在C语言中,如何做到在用户输入密码时不显示密码本身,只回显星号。或者什么都不显示?

在C语言中,如何做到在用户输入密码时不显示密码本身,只回显星号。或者什么都不显示?

在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;

}

相关数据

更换发动机气缸垫需要多久
game365体育投注

更换发动机气缸垫需要多久

⌚ 07-12 👁️‍🗨️ 827
Mac:使用WineBottler运行Windows程序
game365体育投注

Mac:使用WineBottler运行Windows程序

⌚ 06-27 👁️‍🗨️ 4875
中国限量66辆!「奔驰大G」情人节特别版,曝光发售了!
外勤365在线登录

中国限量66辆!「奔驰大G」情人节特别版,曝光发售了!

⌚ 07-15 👁️‍🗨️ 7071