使用C语言校验用户登陆系统的合法性(上)

目录

 一、题目详情

 二、代码的编写

 三、结束语


 一、题目详情

题目:

在f12-2.txt文件保存着系统用户信息,要实现登录系统时校验用户的合法性。

输入用户名和密码,若正确则输出“有效用户”,否则输出“无效用户”。

  注:用户信息包括用户名与登录密码,其中密码已加密。

  密码加密算法:对每个字符ASCII码的低四位求反,高四位保持不变

f12-2文本文件内容 

 

 二、代码的编写

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct sysuser{               //定义系统用户账号信息结构 
	char username[20];
	char password[8];
}; 
void encrypt(char *pwd);      //加密函数 
int check(struct sysuser *psu);
int main(void)
{
	struct sysuser su;
	printf("输入用户名:");
	scanf("%s",su.username);
	printf("输入用户密码:");
	scanf("%s",su.password);
	if(check(&su)==1)
	   printf("有效用户!\n");
	  else printf("无效用户!\n");
	  return 0;

}

//加密算法 
void encrypt(char *pwd)
{
	int i;

	//与15(二进制码是00001111)异或 ,实现低四位取反,高四位保持不变 
	for(i=0;i<strlen(pwd);i++)
	pwd[i]=pwd[i]^15; 
	
}
int check(struct sysuser *psu)
{
	FILE *fp;          //定义文件指针 
	char usr[30],usr1[30],pwd[10];
	int check=0;                     //检查结果变量,初始化为0

	 //连接生成待校验字符串 
	strcpy(usr,psu->username);          //复制用户名到usr 
	strcpy(pwd,psu->password);          //复制登录密码到pwd 
	encrypt(pwd); 
	//连接usr、空格、pwd和\n构成新字符串usr,用于在文件中检查匹配
	strcat(usr," ");strcat(usr,pwd);strcat(usr,"\n");

	 
	if((fp=fopen("f12-2.txt","r"))==NULL){      //打开文件,进行读入操作 
		printf("File open error!\n");
		exit(0);
	} 
   
	// 从文件读入用户信息数据,遍历判断是否存在
	while(!feof(fp)){
		fgets(usr1,30,fp);
		if(strcmp(usr,usr1)==0){
			check=1;break;
		}
	}

       
	//关闭文件
    if(fclose(fp)){                                
		printf("Can not close the file!\n");
		exit(0);
	}
	return check;
}

 运行结果图

 

 三、结束语

本篇内容分上下,具体代码解析放在下篇~

若发现错误或遇到问题,欢迎到评论区留言,大家一起解决问题,共同进步,不断提高!!

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值