来个人解一下题吧,就是看不出来他说的括号到底少了什么符号,最开始可以,然后就不行了
去掉(i<80)
else改成if
去掉了else后面那个括号
【相关推荐】
void Register()
{
Users a, b;//创建用户结构体临时变量,a是用来接收用户输入的,b是用来从文件中读取的,来和a作比较
char tmp[20]="";//用着下面判断的
printf("欢迎来到注册界面!\n");
FILE* pf = fopen("users.dat", "rb");//"rb"是以二进制只读方式打开文件的意思
fread(&b, sizeof(Users), 1, pf);//将数据读入b中
if (!pf)//如果打开失败
{
printf("%s", strerror(errno));//errno可以理解是报的错误对应的编号,strerror可以把这个编号翻译出来,输出在屏幕上
return;
}
Sleep(800);
printf("请输入您的账号>>");
scanf("%s", a.id);
while (1)
{
if (strcmp(a.id, b.id))//两个用户名不相等
{
if (!feof(pf))//没读到文件末尾
{
fread(&b, sizeof(Users), 1, pf);//继续读取文件中的用户到b中
}
else//读到文件末尾了,确认没有重复的id
{
break;
}
}
else//有两个用户名相等
{
printf("此用户名已存在在,请重新输入!\n");
Sleep(1000);
fclose(pf);//关闭文件
pf = NULL;//pf置空,避免野指针
return;
}
}
printf("请输入您的姓名>>");
scanf("%s", a.name);
printf("请输入您的性别>>");
scanf("%s", a.sex);
printf("请输入您的电话号码>>");
scanf("%s", a.phone);
printf("请输入您的密码>>");
Getpwd(a.pwd);//输入密码的函数,有掩盖功能,下面会介绍
printf("\n请再次确认您的密码>>");
Getpwd(tmp);
do
{
if (!strcmp(a.pwd, tmp))//两次密码相等
{
pf = fopen("users.dat", "ab");
fwrite(&a, sizeof(Users), 1, pf);
printf("\n账号注册成功,请登录!\n");
Sleep(500);
fclose(pf);
pf = NULL;
return;
}
else
{
printf("\n两次密码不匹配!请重新输入>>");
Getpwd(a.pwd);
printf("\n请再次确认>>");
Getpwd(tmp);
}
} while (1);
}
文件都是以二进制打开以二进制写入的,没别的原因,就是觉得帅!