c语言密码登陆退格问题?按退格键还是显示“*”

#include"stdio.h"#include"conio.h"main(){charqq[12],zqq[12],passw[16],zpassw[16],ch;i... #include"stdio.h"
#include"conio.h"
main()
{
char qq[12],zqq[12],passw[16],zpassw[16],ch;
int k,i;
/*注册部分*/
printf("please registration account:");
gets(zqq);
printf("please input you password:");
i=0 ;
while((ch=getch())!='\r')
{
zpassw[i++]=ch;
putchar('*');
}
zpassw[i]='\0';
printf("\n");
system("pause");
clrscr();
/*登陆部分*/
for(k=1;k<=3;k++)
{
printf("please input qq:");
i=0;
gets(qq);
printf("please input password:");
while((ch=getch())!='\r')
{
passw[i++]=ch;
putchar('*');
passw[i]='\0';
}
sleep(1);
if(strcmp(qq,zqq)!=0)
{
printf("\nqq is error \n");
if(k<=2)
printf("you have %d chance\n",3-k);
else
{
printf("\ngame over!!!");
sleep(2);
exit(1);
}
}
else if(strcmp(passw,zpassw)==0)
{
printf("\nwelcome!!!\n");
break;
}
else
{
printf("\nyou password is error!!!");
if(k<=2)
printf("\nyou have %d chance\n",3-k);
else
{
printf("\ngame over!!!\n");
sleep(2);
exit(1);
}
}
}
getch();
}
展开
 我来答
supersunkaiyua
2012-12-31 · TA获得超过770个赞
知道小有建树答主
回答量:415
采纳率:100%
帮助的人:195万
展开全部
scanf等可以按backspace退格 是因为它定义了自己的缓冲区。你可以定义一个堆栈,然后判断输入的字符的,是退格符,就出堆栈,否则就入栈。最后把堆栈中的内容复制到另外的 变量中。然后显示的时候可以printf("\b");进行退格。当然,上面的用字符串数组也可以完成。用getch等输入是没有缓冲区的,它会把backspace的值也当做密码的一部分。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式