0

我在 Windows 平台上使用 Turbo C 编译器,Intel x86 架构。

在我的程序中,我正在从键盘扫描用户输入。它是一个登录密码程序,将用户名和密码作为用户输入。

对于我使用getchar()的用户名,如果用户按下退格键,则在输入用户名时,在键盘上,前一个字符被删除,它自己,我的意思是我不需要编写任何显式代码做这个。

但是对于我使用的密码 getch() 并对应于我在屏幕上显示的每次击键。在这种情况下,如果用户按下键盘上的退格键,它不会删除前一个字符,而是将其作为另一个击键并在屏幕上显示一个与之对应的*。

我从 bios.h 中尝试了 bioskey,尝试使用 \b 来解决,没有一个工作。

任何建议或解决方法....????

4

2 回答 2

1

当然。自己跟踪角色。如果您的程序正在接收退格符以显示 *,则检查该字符并备份一个空格。备份一个空格后,打印一个空格以擦除 *,然后再次备份。

于 2011-11-15T06:20:03.043 回答
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..

于 2014-04-09T17:47:51.927 回答