CMD命令行窗口输入密码以掩码形式显示的改进与bug修复

最近正好在做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;
}

此时不会发生删除前面的提示字符的现象。

如果这篇文章大家觉得有意义的话请多多点赞、收藏支持,也可以在下面点击“打赏”按钮打赏支持我哟~

猜你喜欢

转载自blog.csdn.net/cgy13347250452/article/details/130096210