SaveContact
我们知道一个通讯录即使写出来了,但是如果我们结束这次运行,下一次重新运行的时候上次我们存储的数据是被删除了的,为了保留我们之前存储的数据我们需要运用文件操作,把我们之前的数据输入到文件之中。
void SaveContact(Contact*pc)
{
FILE* f = fopen("Contact.txt", "wb");
if (f == NULL)
{
perror("SaveContact::fopen");
return;
}
int i = 0;
for (i = 0; i < pc->sz; i++)
{
fwrite(pc->date + i, sizeof(PeoInfo), 1, f);
}
fclose(f);
f = NULL;
printf("保存成功!\n");
}
LoadContact
数据保存之后并没有万事大吉,因为我们虽然保存了上次运行的数据,但是如果我们要显示我们保存的数据的话,还需要我们再重新从文件中读取数据,然后再进行初始化,所以我们还需要一个加载函数,每次运行的时候就把之前存储的数据重新加载出来。
void LoadContact(Contact*pc)
{
FILE* f = fopen("Contact.txt", "rb");
if (f == NULL)
{
perror("LoadContact::fopen");
}
else
{
check_capacity(pc);
PeoInfo tmp = { 0 };
int i = 0;
while (fread(&tmp, sizeof(PeoInfo), 1, f))
{
pc->date[i] = tmp;
pc->sz++;
i++;
}
fclose(f);
}
}
至此,通讯录的保存功能才算真正完成,感谢看到这里的您,希望本篇文章对您所有帮助!