目录
前言
在退出通讯录之前
在运行通讯录之前
前言
在这篇博客中,实现了动态版本的通讯录,接下来会增加函数,能用文件存储通讯录中的联系人
C语言 ——— 在控制台实现通讯录(增删查改、动态开辟内存空间)-CSDN博客
在退出通讯录之前
代码演示:
//退出通讯录前,将联系人的信息保存到文件中
void SaveContact(Contact* con)
{//wb - 以二进制的形式写入数据FILE* pf = fopen("Contact.dat", "wb");//判断pf指针是否创建成功if (pf == NULL){perror("SaveContact");return;}//写入数据for (int i = 0; i < con->sz; i++){fwrite(con->date + i, sizeof(PeoInFo), 1, pf);}//关闭文件fclose(pf);pf = NULL;
}
代码验证:
在输入了联系人的信息后,查看当前代码目录:
因为存储的联系人的信息是以二进制的形式存储的,所以显示观看的时候是看不懂的
在运行通讯录之前
代码演示:
//初始化时将文件中保存的信息加载到程序中
void LoadContact(Contact* con)
{//打开存储联系人信息的文件//rb - 以二进制的信息读文件FILE* pf = fopen("Contact.dat", "rb");//判断pf指针是否创建成功if (pf == NULL){perror("LoadContact");return;}//读文件//先创建一个可以临时存放每一个联系人数据的结构体PeoInFo tmp = { 0 };//fread函数,读取到数据就返回1,没读取到数据返回0while (fread(&tmp, sizeof(PeoInFo), 1, pf)){//如果文件中存放的数据大于初始化时的数据,就要增容,判断增容是否成功if (CheckCapacity(con) == 0){perror("CheckCapacity");return;}con->date[con->sz] = tmp;con->sz++;}//关闭文件fclose(pf);pf = NULL;
}
代码验证:
在上次退出通讯录前,已经存储了联系人的信息,所以运行通讯录时,直接打印所有联系人的信息,测试是否加载到了程序中:
可以看到,成功将联系人的信息加载到了程序中