【C语言登录注册保存(用户信息保存至文件夹)】

运行环境为VS


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct password {
	int user;             //账号
	char user_name[11];   //用户名
	char pass[8];         //密码
};

//用户登录功能
void login(struct password ps[]);
//注册用户
void pas_add(struct password ps[]);
//读取所有用户信息(从文件)
void pas_read(struct password ps[]);
//保存所有用户信息(到文件)
void pas_save(struct password ps[]);


#define MAX_PAS 100
int p = 0;
int current_user = -1;

int main() {
	struct password ps[MAX_PAS];
	int i;
	//预先从文件读取所有用户信息
	pas_read(ps);
	while (1) {
		printf("\t\t\t\t\t请选择你要进行的操作\n");
		printf("\t\t\t\t\t1、登录\n");
		printf("\t\t\t\t\t2、注册\n");
		printf("\t\t\t\t\t0、退出\n");
		printf("请输入选项\n");
		scanf("%d(0-2):", &i);
		switch (i) {
		case 0:
			return 0;
		case 1:
			//登录
			login(ps);
			break;
		case 2:
			//注册并保存
			pas_add(ps);
			pas_save(ps);
			break;
		default:
			printf("请输入0~2之间的数字\n");
			break;
		}
	}
	return 0;
}


void login(struct password ps[]) {
	int i;
	int user;//存储输入的账号
	char pass[8];//存储输入的密码

	current_user = -1;
	printf("请输入账号(必须为数字):");
	scanf("%d", &user);
	for (i = 0; i < p; i++) {
		if (user == ps[i].user) {
			current_user = i;
			break;
		}
	}
	if (current_user < 0) {
		printf("这个账号不存在,请重新输入账号!\n");
		return;
	}

	printf("请输入密码:");
	scanf("%s", pass);
	if (strcmp(pass, ps[current_user].pass) == 0) {
		printf("登录成功,用户名:%s \n", ps[current_user].user_name);
	}
	else {
		current_user = -1;
		printf("密码不正确\n");
	}
}

void pas_add(struct password ps[]) {
	int i;
	int new_user;
	printf("请输入要注册的账号(必须为数字):");
	scanf("%d", &new_user);
	for (i = 0; i < p; i++) {
		if (new_user == ps[i].user) {
			printf("这个账号已存在,请重新输入账号!\n");
			return;
		}
	}
	ps[i].user = new_user;
	printf("请输入注册用户名\n");
	scanf("%s", ps[i].user_name);
	printf("请输入密码\n");
	scanf("%s", ps[i].pass);
	p++;
}

void pas_read(struct password ps[]) {
	FILE* fp;
	struct password pa;
	//以读的方式打开文件
	fp = fopen("user_password.txt", "r");
	if (fp != NULL) {
		p = 0;
		while (fscanf(fp, "%s %d %s ", pa.user_name, &pa.user, pa.pass) == 3) {      //读取保存至结构体哦
			ps[p] = pa;
			p++; 
		}
		fclose(fp);
	}
}

void pas_save(struct password ps[]) {
	FILE* fp;
	int i;
	//以写的方式打开文件
	fp = fopen("user_password.txt", "w");
	if (fp != NULL) {
		for (i = 0; i < p; i++) {
			fprintf(fp, "%s %d %s\n", ps[i].user_name, ps[i].user, ps[i].pass);  //依次存入
		}
		fclose(fp);
	}
}



  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是念念i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值