无锡微信网站开发,网站后台登陆口,公司有域名的怎么建设网站,福田网站制作报价上一篇文章我们详细讲了文件操作#xff0c;这时候我们就可以把通讯录保存到文件中#xff0c;这样即使程序退出了#xff0c;联系人的信息也还是保存着#xff0c;下一次启动程序时我们就可以把文件中的数据读取到程序中来使用。 保存
首先我们要在退出通讯录之前把联系人…上一篇文章我们详细讲了文件操作这时候我们就可以把通讯录保存到文件中这样即使程序退出了联系人的信息也还是保存着下一次启动程序时我们就可以把文件中的数据读取到程序中来使用。 保存
首先我们要在退出通讯录之前把联系人的信息都保存到文件中。
//退出前存储到文件中
void Save_Contact(Contact* pc)
{assert(pc);FILE*pffopen(contact.txt, wb);int i 0;for (i 0; i pc-count; i){if (fwrite((pc-data[i]), sizeof(People), 1, pf) ! 1){perror(fwrite fail);exit(-1);}}fclose(pf);pf NULL;
}
我们可以像这样一个一个保存进去这样如果在中间某一个数据保存失败时就会退出程序并且打印提示信息。 这时候我们就能发现文件中已经存进去内容了。 读取文件
读取文件的操作应该在初始化之后就读取读取文件的时候我们首先要进行判断我们的工程里面是否有没有这个文件比如第一次使用通讯录的时候我们还没有创建这个文件只有在第一次使用结束的时候我们才会创建。读取的时候我们也一个一个的读取防止中间读取失败每次读取之前判断一下size和count是否相等是否需要扩容。
//读取数据
void ReadtoContact(Contact* pc)
{assert(pc);FILE* pf fopen(contact.txt, rb);if (pf ! NULL){People tmp;while (fread(tmp, sizeof(People), 1, pf) 1){Check(pc);pc-data[pc-count] tmp;pc-count;}fclose(pf);pf NULL;}}
要注意区分写入数据的是我们不知道文件中存了几个联系人的信息所以我们只能通过fread函数的返回值来判断是否读取结束。 功能测试
我们先将之前测试生成的contact.txt文件删除掉首先测试一下初始化通讯录时会不会出现一些多余的数据 我们可以看到第一次进来通讯录时是不会载入任何内容的。
接着我们添加几个联系人进去再退出程序看是否会生成应该txt文件。 如图我们已经添加了几个联系人并且退出了程序。这是我们右击源文件点击添加现有项 我们就能发现在我们的工程目录下已经创建了一个通讯录的文件 当我们添加进来之后打开这个文件会发现文件已经有了内容虽然我们看不懂因为我们是以二进制形式写入的之后我们也会用二进制的形式读取数据。
这时候我们再次打开程序然后直接选择 6 查看联系人 我们就能确定上一次程序退出之前确实已经把数据存到文件中去了而且我们读取数据的函数也没问题。
增加了这两个函数就能够将通讯录升级到文件版本了。