
这个测试用例通过了,但是提交的时候报错,网站不支持查看错误示例,求解
关注【相关推荐】
void Login()
{
Users a, b;//同理,a是用来给用户输入的,b是用来是水的(从文件中读取到b中,用b和a匹配比较)
FILE* pf = fopen("users.dat", "rb");//以只读的方式打开文件
if (!pf)//如果读取失败
{
printf("%s\n", strerror(errno));//上面有讲过~
return;
}
printf("欢迎来到登录界面!\n");
Sleep(1000);
fread(&b, sizeof(Users), 1, pf);//先从文件中读取一个用户试试水
printf("请输入账号>>");
scanf("%s", a.id);
while (1)
{
if (!strcmp(a.id, b.id))//在文件中找到了与用户输入相同的id
{
break;
}
else
{
if (!feof(pf))//没读到文件末尾,继续读取文件中的id到b中
{
fread(&b, sizeof(Users), 1, pf);//继续从文件中读取用户信息进b,直到在文件中找到一个和a的信息相同的
}
else//读到文件末尾了,没有找到与用户输入相同的账号
{
printf("此账号不存在!请重新输入!\n");
Sleep(500);
fclose(pf);
pf = NULL;
return;
}
}
}
do
{
printf("请输入密码>>");
Getpwd(a.pwd);//获取密码,在下面会讲
if (!strcmp(a.pwd, b.pwd))//输入的密码与文件中的相同
{
printf("\n登录成功!欢迎使用!\n");
Sleep(500);
fclose(pf);//用完当然要把文件关啦
pf = NULL;//置空,避免野指针
return;
}
else
{
printf("\n密码输入错误,请重新输入\n");
}
} while (strcmp(a.pwd, b.pwd));
}
大概思路就是用户先输入账号(id),接着b从文件中读取用户,直到找到与用户输入id相同的,然后就是输入密码判断密码对不对咯。 里面用到了一个库函数strcmp,判断字符串是不是一样的,如果一样则返回0,不一样则返回一个非0值。