您的位置:首页 > 编程语言 > C语言/C++

C语言怎么将用户账号密码写入文件实现登录注册功能?

2015-09-05 15:18 1111 查看
创建储存用户账号密码的文件:

void Create_File()
{
FILE *fp;
if ((fp = fopen("users.txt","rb"))==NULL)                 /*如果此文件不存在*/
{
if ((fp = fopen("users.txt","wb+"))==NULL)
{
outtextxy(220, 200, "无法建立文件!");

}
}
}


关于文件读写:

r     只读    为输入打开一个文本文件(文件必须存在)
w     只写    为输出打开一个文本文件(如没有文件,则新建)
a     追加    向文本文件尾添加数据(如没有文件,则新建)
rb    只读    为输入打开一个二进制文件
wb    只写    为输出打开一个二进制文件
ab    追加    向二进制文件尾添加数据
r+    读写    为读写打开一个文本文件(文件必须已经存在)
w+    读写    为读写建立一个新的文本文件
a+    读写    为读写打开一个文本文件(读写指针定位在最后)
rb+   读写    为读写打开一个二进制文件
wb+   读写    为读写建立一个新的二进制文件
ab+   读写    为读写打开一个二进制文件


创建结构体:

typedef struct The_users   //typedef 可以定义结构体别名
{
char id[11];
char pwd[20];
}users;


该结构体用于存储用户账号密码。

注册用户(账号密码)

void registers()  //按结构体的大小,一次写入或者读入1个结构体大小
{
users a,b;//结构体 The_users 重命名定义
FILE *fp;
fp = fopen("users.txt","r");

fread(&b, sizeof(struct The_users), 1, fp); //读入一个结构体字符块 到b

InputBox(a.id,11,"请输入账号");

while (1)
{
if (strcmp(a.id, b.id)) /*如果两串不相等*/
{
if (!feof(fp))    /*如果未到文件尾*/

{
fread(&b, sizeof(struct The_users), 1, fp);
}
else
break;
}
else

{
outtextxy(220, 200, "此用户名已存在!");
fclose(fp);
main();
}
}

InputBox(a.pwd,10,"请输入密码");
fp = fopen("users.txt","a");
fwrite(&a, sizeof(struct The_users), 1, fp);
outtextxy(220, 200, "帐号注册成功!");
fclose(fp);
main();
}


登录账号密码:

void  Input_login()
{
users a,b;//定义结构体The_users别名

FILE *fp;

fp = fopen("users.txt","r");

fread(&b, sizeof(struct The_users), 1, fp); //读入一个结构体字符块 写入b

InputBox(a.id,11,"请输入账号");

outtextxy(295,270,a.id);

while (1)
{
if (strcmp(a.id, b.id)==0)         //如果有此用户名
{
break;
}

else
{
if (!feof(fp))  //如果文件没有读完

{
fread(&b, sizeof(struct The_users), 1, fp);
}

else
{
outtextxy(220, 200, "此用户名不存在!");
fclose(fp);
main();

}
}
}

InputBox(a.pwd,20,"请输入密码");

if (strcmp(a.pwd, b.pwd)==0)            /*如果密码匹配*/

{

fclose(fp);

outtextxy(250, 200, "登录成功,欢迎使用!");

}
else
{       outtextxy(220, 200, "密码不正确!");
main();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: