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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM