C中的结构体实现登录功能,该如何处理

C中的结构体实现登录功能
主要描述:定义一个结构体,包括帐号和密码,第一次运行时,提示用户输入帐号和密码,然后从已经定义好的文件中读取信息,进行匹配,直到读取到文件尾部,如果帐号和密码匹配成功,则登录成功,否则提示用户此账户不存在,是否创建账户,再定义一个函数来实现创建用户的功能,等程序运行结束时,将此结构体存入文件(要求用标C写,不要用winC的控件)求高手实现一下这个功能,一定多给分,谢谢!

------解决方案--------------------
//用户结构体
typedef struct user
{
char name[100];
char passwd[100];
}user;

user usr;//用以保存用户输入
user *temp =(user *)malloc(sizeof(user));//用以获取文件读入

//提示用户输入

//打开文件,循环
//从文件中读取一个user
fread(temp,sizeof(user),1,fp);
//判断是否匹配

//无匹配时,将user写入文件
fwrite(&usr,sizeof(user),1,fp);
------解决方案--------------------
这样的话文件也未免太大了点吧?

帐号和密码本身都是ASCII编码,如果能保证里面没有包含分隔符就可以用fscanf来读入。

比如帐号文件每用户一行,每行首先是帐号字符串,然后是空格分隔,紧接着是密码字符串。

这样的话,就可以用 fscanf("%s %s",account,password);这样的函数来读取了。
------解决方案--------------------
C/C++ code

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

typedef struct user
{
    char name[100];
    char passwd[100];
}user;

int main()
{
    FILE *fp;
    user usr;
    int flag=0;
    int c;
    user *temp =(user *)malloc(sizeof(user));
    
    printf("your name:");
    scanf("%s",usr.name);
    printf("password:");
    scanf("%s",usr.passwd);

    fp=fopen("user","a+");

    while(fread(temp,sizeof(user),1,fp)>0)
    {
        if(strcmp(temp->name,usr.name)==0&&strcmp(temp->passwd,usr.passwd)==0)
        {
            printf("welcome to here %s.\n",usr.name);
            flag=1;
            break;
        }
    }

    if(!flag)
    {
        fwrite(&usr,sizeof(user),1,fp);
        printf("user create success. your name is %s\n",usr.name);
    }

    fclose(fp);

    system("pause");

    return 0;
}