首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-05-09 
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;} 

热点排行