使用文件IO实现简单登录注册

使用文件IO实现简单登录注册

    • 1.需求
    • 2.源码
    • 3.效果

1.需求

1.用户进入登录页面
2.注册账户username,psw
3.注册成功进入登录页面
    思路:
    1.注册:
		把用户输入的username跟psw存到本地文件中,并且用空格分隔username跟psw.
        分别判断username与psw是否创建合理。
        把信息写入本地文件
    2.登录:
            输入username和psw,与本地文件对比,核对成功进入页面,没查到去注册。

2.源码

#include 
#include 
#include 
//本地单词存放路径
#define PATH "/home/hqyj/Documents/.login"
//登陆
int login(){
  //打开保存文件对比用户名
  char *name;
  char *psw;
  char input[40];
  char file[40];
  printf("请输入用户名和密码");
  fgets(input,40,stdin);
  //打开文件
  FILE *fp=fopen(PATH,"r");
  if(fp==NULL)
      return-1;
  name=input;
  strtok(name," ");
  psw=name + strlen(name) +1;
  char *p;
  while(NULL!=fgets(file,40,fp)){
    p=file;
    strtok(p," ");
    //比较用户名是否一致
    if(strcmp(name,p)== 0){
        p=p + strlen(p)+1;
        if(strcmp(psw,p)==0){
            printf("登陆成功\n");
            return 0;
        }else{
            printf("密码错误\n");
            return-1;
        }
    }else{
            continue;
        }
    }
    printf("账户不存在\n");
    return -2;
}

//注册
int regist(){
    char name[16];
    char psw[16];
flag_name:
    printf("请输入用户名:");
    //读取name
    fgets(name,16,stdin);
    //判断name是否合理
    if(name[strlen(name)-1] != '\n'){
        printf("输入名字不合法请重新输入\n");
        goto flag_name;
    }
   name[strlen(name)-1]= '\0';
flag_psw:
    printf("请输入密码:");
    //读取psw
    fgets(psw,16,stdin);
    //判断psw是否合理
    if(psw[strlen(psw)-1] != '\n'){
        printf("输入密码不合法请重新输入\n");
        goto flag_psw;
    }
   psw[strlen(psw)-1]= '\0';
   //打开文件
   int fd=open(PATH,O_RDWR | O_CREAT,0666);
   if(fd<0)
       return -1;
   //创建流
   FILE *fp=fdopen(fd,"r+");
   if(fp==NULL){
        return-1;
   }
   char buf[40];
   char *p=buf;
   while(NULL !=fgets(buf,sizeof(buf),fp)){
        strtok(p," ");
        //输入的用户名跟文件中用户名相同
        if(strcmp(p,name)==0){
            printf("此用户已存在\n");
            goto flag_name;
        }
    }
   openLogin();
   //拷贝用户名
   strcpy(buf,name);
   //连接空格
   strcat(buf," ");
   //连接密码
   strcat(buf,psw);
   //连接换行
   strcat(buf,"\n");
   //写
   fwrite(buf,1,strlen(buf),fp);
   //关闭
   fclose(fp);
}
//登陆注册页面
void openLogin(){
flag_1:
    printf("==============贝尔实验室登陆页面====================\n");
    printf("1.登陆\n");
    printf("2.注册\n");
    int ch;
    scanf("%d",&ch);
    //去掉回车
    while(getchar()!='\n');
    switch(ch){
        case 1:
            login();
            break;
        case 2:
            regist();
            break;
        default:
            printf("输入有误,请重新输入\n");
            goto flag_1;
    }
}
int main(int argc, char *argv[])
{
    openLogin();
    return 0;
} 

3.效果

==============贝尔实验室登陆页面====================
1.登陆
2.注册
1
请输入用户名和密码1 1
登陆成功

这样简单的注册登录就实现了,有时间的同学可以把之前词典加入,登录成功之后可以查询单词,更多需求可以自己实现。

你可能感兴趣的:(c语言)