控制台密码输入控制

参考这篇文章http://www.cnblogs.com/jiangkun86/archive/2011/09/19/2181910.html

文章中说明了《怎样在控制台里面输入密码的时候显示*》,实现起来不是很复杂,就用C++试着写了一下,代码如下:

ContractedBlock.gif ExpandedBlockStart.gif 控制台密码输入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的使用

ContractedBlock.gif ExpandedBlockStart.gif 字符输入输出函数
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为字符变量
ContractedBlock.gif ExpandedBlockStart.gif 字符串输入输出函数
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按键删除已输入字符

转载于:https://www.cnblogs.com/gala/archive/2011/09/21/2184095.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值