小甲鱼的铁粉 发表于 2020-6-20 08:59:57

c语言实现输入密码时的隐藏输入

就比如输入密码时看到的都是****,我的代码可以隐藏,但是当输入错时想退格就出现问题了,应该是if(ch == 8)那里不,麻烦鱼油们看一下吧]

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(void)
{   
        char ch;   
        int i=0;
        while(1)   
        {      
                ch = getch();
      if(ch == '\r')
                {      
                        break;
          }
                if(ch == 8)//这里我想判断如果输入的是删除键‘Backspace"就在终端输入框里面退去一个*,但是我这个是错的,不能实现
                {
                        if(i>=1)
                                i--;
                }
                else
                {
                        printf("*");
                }   
        }
        return 0;
}

麻烦鱼油们看一下{:10_297:}

小甲鱼的铁粉 发表于 2020-6-20 09:00:36

应该是if(ch == 8)那里不对,该怎么改呢

小甲鱼的铁粉 发表于 2020-6-20 09:02:24

唉,代码缩进乱了,再发一遍

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(void)
{   
        char ch;   
        int i=0;
        while(1)   
        {      
                ch = getch();
                if(ch == '\r')
                {      
                        break;
                 }
                if(ch == 8)
                {
                        if(i>=1)
                                i--;
                }
                else
                {
                        printf("*");
                }   
        }
        return 0;
}

永恒的蓝色梦想 发表于 2020-6-20 09:04:36

小甲鱼的铁粉 发表于 2020-6-20 09:02
唉,代码缩进乱了,再发一遍

我记得 conio 和 stdio 混用会出问题的来着?

小甲鱼的铁粉 发表于 2020-6-20 09:05:34

永恒的蓝色梦想 发表于 2020-6-20 09:04
我记得 conio 和 stdio 混用会出问题的来着?

额,其实这里不用conio也可以

小甲鱼的铁粉 发表于 2020-6-20 09:06:08

永恒的蓝色梦想 发表于 2020-6-20 09:04
我记得 conio 和 stdio 混用会出问题的来着?

那个退格怎么弄呀{:10_250:}

405794672 发表于 2020-6-21 09:27:02

你不觉得无论你怎么输入,i都为0吗?i怎么可能>=1。i--又是啥?你定义了输入任何字符都用ch接收。每输入一次,就会覆盖它。当然,每次输入都会打印一个*,这是你代码,但不代表,里面接受的字符有这么多个。
页: [1]
查看完整版本: c语言实现输入密码时的隐藏输入