C语言怎么将用户账号密码写入文件实现登录注册功能?
创建储存用户账号密码的文件:
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/C++
标签:
将用户数据写入文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】