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

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

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();
       }

}
上一篇:Shiro自定义realm实现密码验证及登录、密码加密注册、修改密码的验证


下一篇:Android学习记录(5)—在java中学习多线程下载之断点续传②