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写,不要用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; }