在c语言中输入密码的时候。,输入退格键的时候也会显示“*”,改怎么改?

我的程序如下:chara[20];inti=0;while((a[i]=getch())!='\r'){printf("*");i++;}a[i]='\0';在运行的时候... 我的程序如下:
char a[20];int i=0;
while((a[i]=getch())!='\r')
{
printf("*");
i++;
}
a[i]='\0';
在运行的时候输入退格键想删除的时候也会显示出“*”,而不是想要的删除,这个应该怎么实现?高手帮帮忙吧、
展开
 我来答
百度网友ff2d491
2012-09-19
知道答主
回答量:39
采纳率:0%
帮助的人:15.7万
展开全部
其实你的出发点就是不对的,首先你的判断的意思是输入的不是回车时就显示*,不仅如此,你的赋值语句是在判断前,即使不符合判断也已经为数组赋值了
追问
那我应该怎么写呢?高手指教一下、、
绛喵
2012-09-19 · TA获得超过273个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:125万
展开全部
main()
{
char a[20];int i=0;
while((a[i]=getch())!='\r')
{
if(a[i]=='\b')
{
printf("\b \b");
i--;
}
else
{
printf("*");
i++;
}
}
a[i]='\0';
}
追问
你的代码确实能够实现删除屏幕上的字符“*”,不过我输出数组的数据的时候却是乱码,,怎么回事啊》》
追答
不要忘了最后的那个a[i]='\0'; 
同时用输出字符串的格式。printf("%s",a);
如果你是用循环,就要判断a[i]!='\0'
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萌起白羊郁z
2018-07-17
知道答主
回答量:6
采纳率:0%
帮助的人:6213
展开全部
#include<conio.h>
while((password[j] = getch()) != '\r')
{
if(password[j] == '\b' && strlen(password) == 1)
{
password[j] = '\0';
}
else if(password[j] == '\b')
{
putch('\b');
putch(' ');
putch('\b');
password[j] = '\0';
j--;
}
else
{
putch('*');
j++;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式