虽然可以隐藏输入的字符串了

winhkey 2005-10-23 05:38:38
char a,password[10];
while((a=getch())!=0x0d)
{
printf("*");
password1[i++]=a;
}
password1[i]='\0';

却无法删除前面输过的字符
...全文
140 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
winhkey 2005-10-23
  • 打赏
  • 举报
回复
呵呵,别急,接分吧
winhkey 2005-10-23
  • 打赏
  • 举报
回复
to wanguodu(足文字D) :

多谢,我原来的程序是password[17],控制在6-16个字符以内,提这个问题时我随便写的
csucdl 2005-10-23
  • 打赏
  • 举报
回复
呜呜,我要接分
csucdl 2005-10-23
  • 打赏
  • 举报
回复
给分!!!!!
winhkey 2005-10-23
  • 打赏
  • 举报
回复
to :csucdl(csucdl)

多谢,我原来的程序中i是全局变量,刚才测试时忘了,sorry~~~
wanguodu 2005-10-23
  • 打赏
  • 举报
回复
你的代码中隐含了数组越界问题,下面是比较完善的代码:
char a, password[10]; /* 密码长度最大为9,超过取前9个!*/
int i = 0;

memset(password, 0, sizeof(password));
while((a=getch())!=0x0d)
{
if (a == BACKSPACE_CHAR)
{
if(i > 0)
{
i--;
putch(BACKSPACE_CHAR);
putch(BLANK_CHAR);
putch(BACKSPACE_CHAR);
}
}
else
{
printf("*");
password[i]=a;
if(++i >= 9)
{
break;
}
}
}
csucdl 2005-10-23
  • 打赏
  • 举报
回复
???
我的能通过,而且很正常的
初始化 i = 0
winhkey 2005-10-23
  • 打赏
  • 举报
回复
麻烦楼上的2位再看看,代码编译后运行时刚输入1个字符立刻出错退出了
csucdl 2005-10-23
  • 打赏
  • 举报
回复
while((a = getch()) != 0x0d)
{
if (a == 0x08)//XX为退格键代码
{
if(i > 0)
{
i--;
printf("\b%c\b", ' ');
}
continue;
}
printf("*");
passward1[i++]=a;
}
wanguodu 2005-10-23
  • 打赏
  • 举报
回复
退格字符本身只有“后退一格”的功能,没有擦除功能。为此,在收到退格字符后,可以连续输出以下三个字符:一个退格字符,一个空白字符和又一个退格字符。当然,你的password1数组中需要相应地抹去最后一个字符。


const char NEWLINE_CHAR = '\n';
const char BACKSPACE_CHAR = 8;
const char BLANK_CHAR = ' ';
const char RETURN_CHAR = 13;

while((a=getch())!=RETURN_CHAR)
{
if (a == BACKSPACE_CHAR)
{
i--;
putchar(BACKSPACE_CH);
putchar(BLANK_CHAR);
putchar(BACKSPACE_CH);
continue;
}

password1[i++]=a;
}
winhkey 2005-10-23
  • 打赏
  • 举报
回复
退格键代码0x08,但还是不行,比如我要输入123456,结果误输入12245,此时发现错了想退格重输就不行了。
i_noname 2005-10-23
  • 打赏
  • 举报
回复
while((a=getch())!=0x0d)
{
if (a == XX)//XX为退格键代码
{
i--;
continue;
}
printf("*");
password1[i++]=a;
}
binbin 2005-10-23
  • 打赏
  • 举报
回复
因为你根据没有处理退格键
fujingn188 2005-10-23
  • 打赏
  • 举报
回复
while(i>=0)
password[i--]='\0';

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧