c语言实现用户登录注册
时间: 2023-07-26 22:49:40 浏览: 412
以下是一个简单的C语言程序,用于实现用户登录和注册功能。程序中使用了文件存储用户名和密码,具体实现如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_USER 100 // 最多用户数
#define MAX_LEN 20 // 用户名和密码的最大长度
// 用户结构体
typedef struct user {
char name[MAX_LEN]; // 用户名
char passwd[MAX_LEN]; // 密码
} User;
// 用户数组
User users[MAX_USER];
int user_count = 0;
// 登录函数
int login(char *name, char *passwd) {
int i;
for (i = 0; i < user_count; i++) {
if (strcmp(users[i].name, name) == 0 && strcmp(users[i].passwd, passwd) == 0) {
return i; // 返回用户在数组中的下标
}
}
return -1; // 登录失败
}
// 注册函数
int register_user(char *name, char *passwd) {
if (user_count >= MAX_USER) {
return 0; // 用户已满,注册失败
}
int i;
for (i = 0; i < user_count; i++) {
if (strcmp(users[i].name, name) == 0) {
return 0; // 用户名已存在,注册失败
}
}
// 添加用户
strcpy(users[user_count].name, name);
strcpy(users[user_count].passwd, passwd);
user_count++;
return 1; // 注册成功
}
int main() {
// 从文件中读取用户信息
FILE *fp = fopen("users.txt", "r");
if (fp != NULL) {
while (fscanf(fp, "%s %s", users[user_count].name, users[user_count].passwd) != EOF) {
user_count++;
}
fclose(fp);
}
// 用户登录和注册
int choice;
char name[MAX_LEN], passwd[MAX_LEN];
while (1) {
printf("1. 登录\n2. 注册\n3. 退出\n");
scanf("%d", &choice);
if (choice == 1) {
printf("请输入用户名和密码:\n");
scanf("%s %s", name, passwd);
int index = login(name, passwd);
if (index != -1) {
printf("登录成功,欢迎您 %s!\n", name);
} else {
printf("登录失败,请检查用户名和密码!\n");
}
} else if (choice == 2) {
printf("请输入用户名和密码:\n");
scanf("%s %s", name, passwd);
int res = register_user(name, passwd);
if (res == 1) {
printf("注册成功,欢迎您 %s!\n", name);
} else {
printf("注册失败,用户名已存在或用户已满!\n");
}
} else if (choice == 3) {
break; // 退出程序
} else {
printf("输入有误,请重新输入!\n");
}
}
// 将用户信息保存到文件中
fp = fopen("users.txt", "w");
if (fp != NULL) {
int i;
for (i = 0; i < user_count; i++) {
fprintf(fp, "%s %s\n", users[i].name, users[i].passwd);
}
fclose(fp);
}
return 0;
}
```
程序中使用了一个用户结构体来存储用户名和密码,使用一个用户数组来存储所有用户。在登录和注册函数中,使用循环遍历用户数组来查找用户,登录成功返回用户在数组中的下标,注册成功返回1,否则返回0。在主函数中,使用一个循环来接受用户输入的选择,根据选择调用登录或注册函数,或退出程序。程序在运行结束后,将用户信息保存到文件中,下次运行时从文件中读取用户信息。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)