通过fopen、fscanf函数实现账户登录

 实现过程:

//写一个usr.txt文档,文档中每一行的格式为:姓名 密码  例如:
//hangsan 123456
//lisi abcdef
//任务:
//要求从终端输入账户,密码;
//与文件中的账户密码比较
//如果账户不存在,则输出用户不存在
//如果账户存在,密码错误,则输出密码错误
//如果账户密码均正确,输出登录成功

#include<stdio.h>
#include<string.h>
int main(int argc, const char *argv[])
{	
	//打开一个仅读文件
	FILE *p=fopen("./usr.txt","r");
	if(p==NULL)
	{
		printf("打开失败\n");
		return -1;
	}
	printf("打开usr.txt文件成功\n");

	//定义两个数组存储终端输入的账户密码
	char get_name[20]={},get_password[20]={};

	//定义两个数组存储文件读取的账户密码
	char file_name[20]={},file_password[20]={};

	//定义两个标记符输入的账户密码的存在与否,为0不存在,为1存在
	int flag_name=0,flag_password=0;
	printf("请输入账户>>>");
	scanf("%s",get_name);

	//循环判断文件中是否有该账户存在
	while(1)
	{
		if(fscanf(p,"%s %s",file_name,file_password)==EOF)
		{
			flag_name=0;
			break;
		}
		if(strcmp(file_name,get_name)==0)
		{
			flag_name=1;
			break;
		}
	}

	//判断账户标记符
	if(flag_name==0)
	{
		printf("用户不存在\n");
	}

	else 
	{
		printf("请输入密码>>>");
		scanf("%s",get_password);

        //循环判断密码是否正确
		while(1)
		{
			//判断是否遍历完文件中的数据
			if(fscanf(p,"%s %s",file_name,file_password)==EOF)
			{
				flag_password=0;
				break;
			}

			//判断文件中是否有相同的数据
			if(strcmp(file_password,get_password)==0)
			{
				flag_password=1;
				break;
			}

		}
		//判断密码标记符
		if(flag_password==0)
		{
			printf("密码错误\n");
		}
		else
		{
			printf("登录成功\n");
		}
	}

	//关闭文件
	if(fclose(p)<0)
	{
		perror("fclose");
		return -1;
	}
	printf("关闭文件成功\n");

	return 0;
}

 实现效果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值