密码显星号模拟登录程序
可能没有成绩管理里的简洁
Vs2019可运行
vc++6.0简单修改
注释很详细
/* 获取字符_getch()函数,但是不在控制台打印出来,/b/r都能被获取且不产生任何效果*/
#include <stdio.h>
#include <conio.h>
void login_check(char mm[]);
int strcmp1(char* pr, char* qw);
void main()
{
int flag;
char user[100];//开辟足够连续空间
char mm[20] = {"6981092"};//设置正确密码
login_check(user);//通过指针把用户的密码传进user
flag = strcmp1(user, mm);
if (flag == 0)
{
printf("输入正确\n");
}
else printf("输入错误\n");
printf("mm:%s\nname:%s\n",mm,user);
}
void login_check(char mm[])
{
int i = 0,fl=0;
char input;
while (1)
{
if ((input = _getch()) != '\r')//检测是否enter即登录
{
if (input != '\b')//是否想要删除
{
*(mm + i++) = input;
printf("*");//模拟真实密码输入环境
fflush(stdin);//清空缓冲区
fl++;
}
if (input == '\b' && fl != 0)
{
fl--;
i--;
printf("\b \b");//退格覆盖退格
}
}
else
{
*(mm + i) = '\0';//附结束标志附
fflush(stdin);
printf("\n");
return;
}
}
}
int strcmp1(char* pr, char* qw)//自己写的字符串校验函数,不如库函数
{
int i = 0;
while ((*(pr + i) == *(qw + i)) && (*(pr + i) != '\0') && (*(qw + i) != '\0'))
{
i++;
}
if (*(pr + i) > *(qw + i))
return 1;
if (*(pr + i) < *(qw + i))
return -1;
else return 0;
}