C语言利用数组和文件登录注册功能

C语言利用数组和文件登录注册功能

C语言利用文件系统实现简单的用户登录和注册功能

版本一:利用数组

最近有个朋友让我帮他做一个C语言的登录注册功能,考虑到他没有学到数据库于是想到了存入文件

此版本使用的数组,第二个版本使用的是链表,链表是一个很好的数据结构,推荐大家用链表

第二版链接可以去我的主页找


话不多说上代码

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

#define USER_MAX 20
//此系统能存放最多的用户数

typedef struct
{
    char name[10];
    char password[10];
} User;
//定义一个存放用户的结构体

User list[USER_MAX];
//定义一个全局数组,类型是User,大小是USER_MAX

char* filename = "user.txt";
//需要在你的程序目录下新建一个user.txt文件


//登录函数
User login()
{
    char name[10];
    char password[10];
    User lg;
    printf("enter name:");
    scanf("%s",name);
    strcpy(lg.name , name);
    printf("enter password:");
    scanf("%s",password);
    strcpy(lg.password,password);
    return lg;
}

//写入txt文件,每一行存在一个用户
void writeToFile(User u)
{
    FILE *fw = fopen(filename,"a+");
    fprintf(fw,u.name);
    fprintf(fw,"\t");
    fprintf(fw,u.password);
    fprintf(fw,"\n");
}

//判断是否存在该用户
int exist(User u)
{
    int i;
    for(i=0; i<USER_MAX; i++)
    {
        if(0==strcmp(list[i].name ,u.name) && 0==strcmp(list[i].password ,u.password))
        {
            return 1;
        }
    }
    return -1;
}

//注册用户
void registerUser()
{
    char name[10];
    char password[10];
    User user;
    int i;

    printf("enter your name:");
    scanf("%s",name);
    strcpy(user.name , name);

    //判断注册的用户是否已存在
    for(i=0; i<USER_MAX; i++)
    {
        if(0==strcmp(list[i].name ,name))
        {
            printf("USER ALREADY EXIST");
            return;
        }
    }

    printf("enter your password:");
    scanf("%s",password);
    strcpy(user.password , password);
    writeToFile(user);
}

int menu()
{
    int choice;
    printf("1.login\n");
    printf("2.register\n");
    printf("#.exit\n");
    printf("enter your choice:");
    scanf("%d",&choice);
    return choice;
}




int main()
{
    User test[USER_MAX];
    FILE *fp = fopen(filename,"r");
    int i=0;
    User u;
    if(NULL == fp)
    {
        printf("FILE NOT FOUND");
        return -1;
    }
    for(i=0; i<USER_MAX; i++)
    {
        char uname[10];
        char upassword[10];
        fscanf(fp,"%s%s",uname,upassword);

        strcpy(list[i].name , uname);
        strcpy(list[i].password , upassword);
    }

    int choice = menu();
    if(1 == choice)
    {
        system("cls");
        u=login();
        if(1 == exist(u))
        {
            printf("success");
        }
        else
        {
            printf("WRONG USER OR PASS");
        }

    }
    else if(2 == choice)
    {
        system("cls");
        registerUser();
    }
    else
    {
        return 0;
    }


}

运行结果

菜单,比较简陋,可以根据自己需求加东西
PS我并未写循环语句,只是简单实现功能,所以读者可根据需求写菜单的循环
这里写图片描述

注册
这里写图片描述

看一下文件
这里写图片描述

登录
这里写图片描述

异常路径(登录失败)
这里写图片描述

转载于:https://www.cnblogs.com/xiatom/p/9805972.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101422.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于pdb文件

    关于pdb文件关于pdb文件当程序在VS上编译时,程序所依赖的所有动态链接库(dll文件)也会被编译,编译过程中每个dll都会产生一个pdb文件,又称为“符号文件”,是一个存储数据的信息文件,其包含dll库在编译过程的某些调试信息,例如程序中所用到的全局变量、局部变量、函数名以及他们的入口地址等。当使用VS调试程序时,会默认加载你的程序以及程序依赖的dll库产生的所有pdb文件,但是结…

    2022年6月2日
    60
  • leetcode-54螺旋矩阵

    leetcode-54螺旋矩阵给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]提示:m == matrix.lengthn == matrix[i].length1 <= m,

    2022年8月8日
    6
  • eclipse集成svn使用_svn常用命令

    eclipse集成svn使用_svn常用命令在新版本的Eclipse中是没有svn这个插件,如果我们要用,不得不自己去集成SVN(我不知道老版当中有没有这个插件,没太注意这个问题),今天给大家带来2种集成的方式,一种是在线集成,另一种否是离线集成。这也是我目前知道的2种方案,我也不清楚还有没有其它方案。1.在线集成:Name:这个可以任意添,没有硬性规定,最好见名知意。Location:http://subclipse.tigris.org…

    2022年9月26日
    3
  • 华为手机桌面时钟天气_华为手机怎么让屏幕显示天气和时钟

    华为手机桌面时钟天气_华为手机怎么让屏幕显示天气和时钟华为手机锁屏时钟软件是一款安卓手机桌面锁屏时钟工具,拥有多种锁屏时钟样式,软件使用界面精致简洁,锁屏也能够看时间,拥有多种时钟颜色可以选择,还可以添加各种提醒服务,到点即可提醒用户,使用方法简单,拥有多种显示模式,需要的伙伴,西西下载使用吧!华为手机锁屏时钟软件特色:锁屏时钟是一款功能齐全又实用的时钟显示软件,主界面是一个自带时间、日期、天气的LED数字时钟和模拟时钟,全屏显示翻页时钟,酷炫美观…

    2022年9月29日
    6
  • mac完全卸载Pycharm亲测[通俗易懂]

    mac完全卸载Pycharm亲测[通俗易懂]解决在网上找的都是删除log,cache根本就没有相关文件,最后翻出去找到完全删除的相关命令,针对linux找到的解析Here’swhatworkedbestforme.GotoApplications>rightclickPyCharm>movetotrashopenaterminalandrunthefollowing:find~/Library/-iname“pycharm”verifythatalloft

    2025年6月18日
    4
  • 传感器开发流程!_传感器工艺流程

    传感器开发流程!_传感器工艺流程今天公司要求我进行传感器的开发,而且只给2天时间,反映下自己没做过这方面可能需要时间延长下,不管,就给你两天时间!干不完就使劲加班…现在企业压榨劳动力太赤裸裸了

    2022年9月29日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号