爱情连连看邓尘朵牵手:C++中,怎么做一个无回显的密码输入?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 04:27:36
一个纯字符界面的程序,要求输入密码的时候,不显示输入的东西,根据输入的位数,显示*

你的程序如果是在Unix下运行的,那么可以用tcgetattr tcsetattr这样的终端属性设置函数,将回显打开并设置回显的内容。

#include "conio.h"
#include "stdio.h"
#include "string.h"
main()
{char c[20];
int i=0;
while((c[i++]=getch())!='\r')printf("*");
c[i-1]='\0';
i=0;
printf("\n");
while((c[i]!='\0'))printf("%c",c[i++]);
if(strcmp(c,"hello")==0)printf("\nWelcome!");
else printf("\nError!");
getch();
}

这个程序输入密码会以*号代替,输入后与原始密码("hello")进行比对,如果正确会显示“Welcome!”,如果错误会显示“Error!”,不管密码对错,输入后都会打出来。不过,这样的程序还是有缺陷,如果输入的时候用退格键,方向键之类的功能键,程序也会把它当作字符进行处理。估计在字符模式下没有办法改进这个缺陷,在图形模式下倒是可以用重绘。

C里面有个无回显函数getch()