zoukankan      html  css  js  c++  java
  • 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();
           }
           
    }
  • 相关阅读:
    leetcode第9题判断回文数
    leetcode整数反转第七题
    leetcode刷题两数之和
    找工作之旅
    C#和.Ne学习第五天
    C#和.Ne学习第四天
    C#和.Ne学习第三天
    C#和.Ne学习第二天
    C#和.Ne学习第一天
    从今天开始正事学习C#和.Net了
  • 原文地址:https://www.cnblogs.com/zhaocundang/p/4783276.html
Copyright © 2011-2022 走看看