我在Windows平台Intel x86架构上使用Turbo C编译器。
在我的程序中,我正在从键盘扫描用户输入。它是一个登录密码程序,它将用户名和密码作为用户输入。
对于我使用getchar()的用户名,如果用户按下退格键输入用户名,在键盘上,前一个字符会被删除,就自己而言,我的意思是我不会&#39 ; t需要编写任何显式代码来执行此操作。
但是对于密码我使用getch()并且对应于每次按键我在屏幕上显示*。在这种情况下,如果用户按下键盘上的退格键,它不会删除前一个字符,而是将其作为另一个键击,并在屏幕上显示与其对应的*。
我从bios.h尝试了bioskey,尝试使用\ b来解决,没有工作。
任何建议或解决方法.... ????
答案 0 :(得分:1)
不确定。跟踪自己的角色。如果您的程序正在接收退格,以便显示*,则检查该字符并备份一个空格。备份一个空格后,打印一个空格以擦除*,然后再次备份。
答案 1 :(得分:0)
以下是获取密码的代码:
int i;
char c,*buf;
printf("Password: ");
for(i=0;(c=getch())!='\r';)
{
//checking wheter the entered character is backspace NOTE: ASCII value for '\b' is 8
if(c!=8)
{
buf[i]=c;
printf("*");
i++;
}
else
{
i--;
if(i<0)
i++;
else
printf("\b \b");//implementing the effect of backspace
}
}
buf[i]='\0';//terminating the password string
printf("%s",buf);//to check the input password is stored correctly or not, i displayed them
getch();
我希望这会对你有所帮助..: - D:-D ..