控制台密码输入控制
参考这篇文章http://www.cnblogs.com/jiangkun86/archive/2011/09/19/2181910.html
文章中说明了《怎样在控制台里面输入密码的时候显示*》,实现起来不是很复杂,就用C++试着写了一下,代码如下:

#include <stdio.h>
#include <conio.h>
#define PWD_MAX 12
int _tmain(int argc, _TCHAR* argv[])
{
char pwd[PWD_MAX+1];
int ch;
int i=0;
bool isCancel=false;
printf("请输入您的密码(最多%d位):",PWD_MAX);
//输入密码操作
while(true)
{
ch=getch();
int ich=int(ch);
if (ich==13)
{
break; //13: Entry
}
if (ich==27)
{
printf("\n取消密码登陆,欢迎再次光临\n");
isCancel=true;
break; //27: ESC
}
//删除最后一个字符,只对密码操作有效
if (ch=='\b')
{
if(i==0)continue;
printf("%c %c",'\b','\b');
i--;
pwd[i]='\0';
continue;
}
//屏蔽非打印字符
//if (ich<33 || ich>126)continue;
if (i<PWD_MAX)
{
pwd[i]=ch;
printf("*");
i++;
}
}
pwd[i]='\0';
if (!isCancel)
{
printf("\n您输入的密码是:%s\n",pwd);
}
//暂停,任意键退出
getch();
return 0;
}
整理:
1.在控制台下,可以看到F1-F10功能键是有输出的可打印字符的,依次对应(;<=>?@ABCD);F11和F12键,上下左右方向键,Delete等按键都会有输出。在Windows下没有输出应该是操作系统做了处理,实现了具有某个特殊功能的按键。
2.字符接收处理函数getchar、getche、getch的使用

getchar输入字符
是由键盘输入一个字符后马上按【Enter】确认,此动作除了将输入的字符显示在屏幕目前插入点光标处外,并将输入的字符存入指定的字符变量。若连续由键盘输入多个字符后才按下【Enter】,系统只抓取第一个字符,其他字符丢弃。
语法:int ch=getchar();//头文件stdio.h,ch为字符变量
getche输入字符
和getchar一样,区别是getche函数不必等待【Enter】,便将输入的字符存入至指定的字符变量,并将输入的字符显示在屏幕的当前插入点。
语法:int ch=getche();//头文件conio.h,ch为字符变量
getch输入字符
getchar和getche函数输入字符时都会将输入的字符显示在屏幕,若不希望输入的字符显示在屏幕上,可使用此函数。getch和getche一样,不需要等待【Enter】。
语法:int ch=getch();//头文件conio.h,ch为字符变量
putchar输出字符
用于将指定的字符变量,显示到目前光标所在处。
语法:putchar(ch);//头文件stdio.h,ch为字符变量

gets字符串输入函数
gets函数允许连续读取由键盘输入的任何字符,一直到按【Enter】,系统自动在所读取的一连串字符的最后面加上一个字符串结束符(\0空字符),形成一个字符串(String),存入指定的字符数组中。
虽然scanf也可用来输入字符串,但是输入的字符串中间若有空格,马上停止读取的动作,此时接在空格后面的字符串必须另外再设置一个字符数组来读取。
语法:
char strTemp[20];
gets(strTem);//头文件stdio.h
其中strTemp为字符数组名,最多可存放19个字符。要注意声明数组的大小时,必须比实际输入字符串的长度减1,以便在字符串最后面加入一个空字符(\0)当做字符串结束字符。
puts字符串输出函数
用来将字符串显示在屏幕上,它将puts函数小括号内指定的字符数组或字符串常数显示到屏幕。
语法:
puts(usrname);//字符数组
puts("Please enter password:");//字符串常量,头文件stdio.h
3.字符数组的操作
4.控制台下使用BackSpace按键删除已输入字符
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理