这是学习了对文本操作之后对之前写的用户管理模块进行补充,使数据可以持久化,即关闭程序之后再次打开可以得到之前输入的数据。
在”manager_user.c“中添加读取,和写入模块,借用文本在每次运行和结束运行的时候来读取和存储用户信息,达到数据持久化的目的。
//存入数据
void wfp(void)
{
FILE* user=fopen("user.txt","w");
if(NULL == user)
{
printf("写入数据错误!");
return;
}
for(int i=0;i<cnt;i++)
{
fprintf(user,"%s %s %s %c\n",id[i].name,id[i].password,id[i].phone,id[i].lock);
}
fclose(user);
}
//读取数据
void rfp(void)
{
FILE* user=fopen("user.txt","r");
if(NULL == user)
{
printf("读取数据错误!");
return;
}
int ret = 0;
do{
ret = fscanf(user,"%s %s %s %c\n",id[cnt].name,id[cnt].password,id[cnt].phone,&id[cnt].lock);
}while(4 == ret && ++cnt);
fclose(user);
}
在主函数中调用使函数运行时先读取文件中的用户数据到id数组中,并将用户个数赋值给全局变量cnt,完成数据的初始化。退出操作界面之后将数组id中的值写入user.txt中。
int main(int argc,const char* argv[])
{
rfp();
for(;;)
{
show_ml();
switch(get_cmd('1','4'))
{
case '1': enroll(); break;
case '2': goup(); break;
case '3': show_all(); break;
case '4': wfp();return 0;
}
}
}