C语言利用数组和文件实现登录注册功能

C语言利用文件系统实现简单的用户登录和注册功能

版本一:利用数组

最近有个朋友让我帮他做一个C语言的登录注册功能,考虑到他没有学到数据库于是想到了存入文件

此版本使用的数组,第二个版本使用的是链表,链表是一个很好的数据结构,推荐大家用链表

第二版:链接

话不多说上代码

#include <stdio.h>

#include <stdlib.h>

#define USER_MAX 20

//此系统能存放最多的用户数

typedef struct

{

char name[10];

char password[10];

} User;

//定义一个存放用户的结构体

User list[USER_MAX];

//定义一个全局数组,类型是User,大小是USER_MAX

char* filename = "user.txt";

//需要在你的程序目录下新建一个user.txt文件

//登录函数

User login()

{

char name[10];

char password[10];

User lg;

printf("enter name:");

scanf("%s",name);

strcpy(lg.name , name);

printf("enter password:");

scanf("%s",password);

strcpy(lg.password,password);

return lg;

}

//写入txt文件,每一行存在一个用户

void writeToFile(User u)

{

FILE *fw = fopen(filename,"a+");

fprintf(fw,u.name);

fprintf(fw,"\t");

fprintf(fw,u.password);

fprintf(fw,"\n");

}

//判断是否存在该用户

int exist(User u)

{

int i;

for(i=0; i<USER_MAX; i++)

{

if(0==strcmp(list[i].name ,u.name) && 0==strcmp(list[i].password ,u.password))

{

return 1;

}

}

return -1;

}

//注册用户

void registerUser()

{

char name[10];

char password[10];

User user;

int i;

printf("enter your name:");

scanf("%s",name);

strcpy(user.name , name);

//判断注册的用户是否已存在

for(i=0; i<USER_MAX; i++)

{

if(0==strcmp(list[i].name ,name))

{

printf("USER ALREADY EXIST");

return;

}

}

printf("enter your password:");

scanf("%s",password);

strcpy(user.password , password);

writeToFile(user);

}

int menu()

{

int choice;

printf("1.login\n");

printf("2.register\n");

printf("#.exit\n");

printf("enter your choice:");

scanf("%d",&choice);

return choice;

}

int main()

{

User test[USER_MAX];

FILE *fp = fopen(filename,"r");

int i=0;

User u;

if(NULL == fp)

{

printf("FILE NOT FOUND");

return -1;

}

for(i=0; i<USER_MAX; i++)

{

char uname[10];

char upassword[10];

fscanf(fp,"%s%s",uname,upassword);

strcpy(list[i].name , uname);

strcpy(list[i].password , upassword);

}

int choice = menu();

if(1 == choice)

{

system("cls");

u=login();

if(1 == exist(u))

{

printf("success");

}

else

{

printf("WRONG USER OR PASS");

}

}

else if(2 == choice)

{

system("cls");

registerUser();

}

else

{

return 0;

}

}

运行结果

菜单,比较简陋,可以根据自己需求加东西

PS我并未写循环语句,只是简单实现功能,所以读者可根据需求写菜单的循环

注册

看一下文件

登录

异常路径(登录失败)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 C语言利用数组和文件实现登录注册功能 的全部内容, 来源链接: utcz.com/p/245772.html

回到顶部