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(); } }
相关文章推荐
- C++中的虚基类
- iOS求职之C语言面试题
- C++蜗牛
- 【C++】类的特殊成员变量+初始化列表
- c++运算符重载
- 漫谈C指针第七讲---const int *pi 的语义
- 理解临时对象的来源(More Effective C++_19(效率))
- C++之成员函数的重载,覆盖,隐藏
- POJ C++程序设计 编程题#1 编程作业—STL1
- C++设计模式-Command命令模式
- 【C++】默认构造函数
- HDU 2072 单词数 -- C++ string set 统计不同的单词数目
- 【more effective c++读书笔记】【第5章】技术(4)——Smart Pointers(智能指针)
- 【more effective c++读书笔记】【第5章】技术(4)——Smart Pointers(智能指针)
- [C++11/14] 自动类型推导——auto
- c++ 虚函数动态多态性
- C++入门经典 笔记 (第十五章)运算符重载
- C++基础之类
- C++_typeid用法
- C++primer阅读笔记-重载运算与类型转换(可调用对象与function)