创建储存用户账号密码的文件:

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

        }
    }
}

关于文件读写:

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

创建结构体:

typedef struct The_users   //typedef 可以定义结构体别名
{
    ];
    ];
}users;

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

注册用户(账号密码)

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

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

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

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

                 {
                     fread(&b, , fp);
                 }
                 else
                     break;
             }
             else

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

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

登录账号密码:

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

    FILE *fp;

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

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

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

    outtextxy(,,a.id);

             )
           {
           )         //如果有此用户名
           {
               break;
           }

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

               {
                   fread(&b, , fp);
               }

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

               }
           }
       }

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

)            /*如果密码匹配*/

       {

           fclose(fp);

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

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

}

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

  1. 一个关于vue+mysql+express的全栈项目(三)------ 登录注册功能的实现(已经密码安全的设计)

    本系列文章,主要是一个前端的视角来实现一些后端的功能,所以不会讲太多的前端东西,主要是分享做这个项目学到的一些东西,,,,, 好了闲话不多说,我们开始搭建后端服务,这里我们采用node的express ...

  2. C 语言实例 - 将字符串写入文件

    C 语言实例 - 将字符串写入文件 C 语言实例 C 语言实例 将字符串写入文件. 实例 #include <stdio.h> #include <stdlib.h> /* e ...

  3. c文件二进制读取写入文件、c语言实现二进制(01)转化成txt格式文本、c读取文件名可变

    c语言实现二进制(01)转化成txt格式文本: 下面的程序只能实现ascall对应字符转换,如果文件内出现中文字符,则会出现错误. 本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件 ...

  4. C语言中链表任意位置怎么插入数据?然后写入文件中?

    链表插入示意图:(图是个人所画)因为链表指针指来指去,难以理解,所以辅助画图更加方便. 插入某个学号后面图: 定义的结构体: struct student { ]; //学生学号 ]; //学生姓名 ...

  5. C语言:把分数最低的学生数据放入数组b所指的数组中,-从键盘输入若干字符串,写入文件myfile4中,用-1作字符输入结束的标志,

    //学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,fun函数:把分数最低的学生数据放入数组b所指的数组中,分数最低的学生可能不止一个.人数返回. #include <st ...

  6. I/O处理小练习--保存用户账号密码

    I/O处理小练习--保存用户账号密码 用户输入姓名和密码,将每一个姓名和密码保存到文件中,输入done时程序结束 import java.io.*; public class Example { pu ...

  7. 小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell

    SQL手工注入 1.读取文件[load_file函数] ' union  SELECT null,load_file('/etc/passwd')--+ burpsuite 2.写入文件 ' unio ...

  8. Tweak 中系统方法写入文件到根目录下面失败

    Tweak 中系统方法写入文件到根目录下面失败 失败原因: Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t ...

  9. linux批量添加10个用户并将其随机密码和用户名写入文件

    需求: 批量新建10个测试用户,并且让其密码随机,把用户名和密码写入一个文件,并有创建时间和创建者 #!/usr/bin/python # -*- coding: utf-8 -*- import o ...

随机推荐

  1. INFO: task java:27465 blocked for more than 120 seconds不一定是cache太大的问题

    这几天,老有几个环境在中午收盘后者下午收盘后那一会儿,系统打不开,然后过了一会儿,进程就消失不见了,查看了下/var/log/message,有如下信息: Dec 12 11:35:38 iZ23nn ...

  2. HTTP协议(转)

    HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...

  3. javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String

    javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String javax.el.Bean ...

  4. MagicSuggest – Bootstrap 主题的多选组合框

    MagicSuggest 是专为 Bootstrap 主题开发的多选组合框.它支持自定义呈现,数据通过 Ajax 异步获取,使用组件自动过滤.它允许空间免费项目,也有动态加载固定的建议. 您可能感兴趣 ...

  5. MySQL之MySQL5.7中文乱码

    自己的MySQL服务器不能添加中文,于是自己使用 show variables like 'character%'; 查看了当前的编码格式 我又通过以下方法将其设置为utf-8 SETcharacte ...

  6. 小白的CSS基础学习

    CSS定义: CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML内容在浏览器内的显示样式. CSS代码语法: css样式选择组成部分:选择符+声明( ...

  7. 初试在线破解工具Hydra爆破3389服务器

    hydra是一款全能的暴力破解工具,功能强大,几乎支持所有的协议,是著名黑客组织thc开发的. 在Kali Linux下已经是默认安装的,于是测试爆破一下自己的一台VM虚拟机服务器.hydra还支持G ...

  8. 为Autodesk Viewer添加自定义工具条

    如果你参加过我们近期的活动,你就会频繁的听到我们现在正在做的Autodesk Viewer大模型浏览器,这是一个不需要下载任何插件,基于WebGL技术的浏览器,可以支持几十种数据格式.同时viewer ...

  9. IOS常用第三方开源类库&组件

    1.AFNetworking AFNetworking 采用 NSURLConnection + NSOperation, 主要方便与服务端 API 进行数据交换, 操作简单, 功能强大, 现在许多人 ...

  10. eclipse中使用javadoc生成文档

    1.Javadoc command:输入 [jdk路径]\javadoc.exe 2.Extra Javadoc options输入 -windowtitle '标题'-encoding UTF-8 ...