最近正好在做cmd的密码输入项目,有关于输入密码以掩码形式的内容,正好看到这篇文章:
C语言编程练习(12)——cmd实现 模拟用户登录功能(掩码版)_windows cmd交互模拟_欢乐的小鹿的博客-CSDN博客内容当然是很不错的,代码基本可以实现功能。但是发现在删除密码时,可以发生越界,i虽然在负数时重置为0,但是实际上还是能够将前面的提示字符也会跟着删除,因此修改代码如下:
void inputpasswd(char* str)
{
int i = 0;
while (1)
{
char ch = _getch();
if (ch == '\r')
{
str[i] = '\0';
break;
}
else if (ch == '\b')
{
i--;
if (i < 0)
i = 0;
else
printf("\b \b");
}
else
{
str[i] = ch;
i++;
putchar('*');
}
}
return;
}
此时不会发生删除前面的提示字符的现象。
如果这篇文章大家觉得有意义的话请多多点赞、收藏支持,也可以在下面点击“打赏”按钮打赏支持我哟~