总体思路
①保存
思路
把通讯录中的data[0]、data[1]、……直接写入文件就行
源码
void SaveContact(const struct Contact* pc)
{
//打开文件
FILE* pf = fopen("data.txt", "wb");//二进制地写
//判断
if (NULL == pf)
{
perror("SaveContact()");
return;
}
//写文件
int i = 0;
for (i = 0; i < pc->sz; i++)
{
fwrite(pc->data + i, sizeof(struct PeoInfo), 1, pf);
}
printf("保存成功!\n");
//关闭文件
fclose(pf);
pf = NULL;
}
注意:选择’0’退出之后才会保存信息
②加载
思路
源码
//加载信息 放入 contact程序内存中(文件→内存)
void LoadContact(struct Contact* pc)
{
//打开文件
FILE* pfread = fopen("data.txt", "rb");//二进制地读
//判断
if (NULL == pfread)
{
perror("SaveContact()");
return;
}
//读文件
//这里读文件注意:通讯录有初始大小,需要加载到通讯录的信息超过初始大小后需要增容
int i = 0;
struct PeoInfo tmp = { 0 };
while (fread(&tmp, sizeof(struct PeoInfo), 1, pfread))
{
Check_capacity(pc);//放入通讯率之前check一下
pc->data[pc->sz] = tmp;
pc->sz++;
}
//关闭文件
fclose(pfread);
pfread = NULL;
}
sum.
完整源码
ps.真正应用的时候数据是放在数据库里,这里仅展示一下文件的操作
——————————————————————————————————@fantasy_13_7———EDN——————