#include<stdio.h>
#include <termios.h>
char Getch()
{
char ch
struct termios oldt, newt
tcgetattr(STDIN_FILENO, &oldt)
newt = oldt
newt.c_lflag &= ~(ECHO|ICANON)
tcsetattr(STDIN_FILENO, TCSANOW, &newt)
ch = getchar()
tcsetattr(STDIN_FILENO, TCSANOW, &oldt)
return ch
}
void getpasswd(char *p)
{
int i=0
printf("password:")
while((*(p+i)=Getch())!='\n')
{
putchar('*')
i++
}
*(p+i) = '\0'
}
int main()
{
char a[10]
getpasswd(a)
printf("%s",a)
}
#include<conio.h> //这个头文件不是标准库函数的,一般编译器是有的,但是unix和linux编译器是没有的#define PASSWORD "123456"
int password()
{
char
p[20],i=0
system("cls")
printf("请输入密码 =>")
while(p[i]=getch())
{
if(p[i]==13)
break
if(p[i]!='\b')
{
printf("*")
i++
}
else
{
printf("\b
\b")
i--
}
}
p[i]='\0'
if(strcmp(p,PASSWORD)==0)
{
printf("验证通过")
press()
return 1
}
else
{
printf("密码错误")
press()
return 0
}
}
有办法,但有个地方你要改,就是这里:gets(Password)你记得C语言里本来有三个字符输入函数
getch(), getche(), getchar()
三个函数各有不同,其中getchar()会显示,要回车, getch()不显示,不回车
getche()这个。。。恕我直言,忘了。。。不过我们用不到它
用到的就是getch()这个函数的特性,只管输入,它不会显示在屏幕上你输入的内容。那它不会显示,我们~~给它加一个显示的好咯,printf("*");
但别忘了,getch()是字符输入,不是字符串,估计得用循环咯
程序首部加上char ch
然后你的gets(Password)删掉换成下边的:
while(1)
{
if((ch = getch()) == 27)
{
break
}
printf("*")
//注意下面的内容,想办法把ch这个字符填加到Password这个字符串里
//方法嘛,我想你可以想出来的吧,这里我不写了,有问题HI我吧
}
注意上边是个死循环,唯一的出口就是那个break,27是ESC键的ASCII码,这里我就设置了如果输出中按了ESC键,则跳出循环,停止输入,你可以换成回车或其它键的ASCII码,自由定。