C语言实现通讯录(文件版)

这篇具有很好参考价值的文章主要介绍了C语言实现通讯录(文件版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、学习完C语言文件,可以增加通讯录的以下功能

学习完C语言的文件读写,我们又可以将通讯录增加以下功能:


1.当退出通讯录的时候,把已增加的联系人信息写到文件中。

2.当通讯录初始化的时候,加载(读取)文件里的信息到通讯录 ——(直接使用打印函数可以显示在屏幕上)

二、分析和实现相应函数

分析:

  1. 当我们退出通讯录的时候要实现通讯录的保存功能 (实现保存通讯录联系人信息到Contact.dat文件)——SaveContact

  1. 当我们再次运行通讯录并对通讯录进行增删查改的时候,我们就应该要实现将文件中的信息输出到运行框中显示出来——LoadContact

  1. 当我们实现LoadContact函数的时候,发现要在初始化通讯录函数中就要调用加载函数LoadContact

  1. 在使用LoadContact函数的时候,发现会有问题——如果文件中联系人的个数大于3(capacity),这时我们将文件读取到程序中这时发现就无法显示文件中所有人的信息。这时我们就要在LoadContact函数中先扩容,再读取。
  1. 我们发现很多地方要利用扩容,所以我们干脆实现一个扩容函数。

实现:

初始化函数中调用LoadContact

void InitContact( Contact* ps)
{
	assert(ps);
	ps->data = (PeoInfo*)malloc(default_sz * sizeof(PeoInfo));
	if (ps->data == NULL)
	{
		perror("InitContact");
		return;
	}
	ps->size = 0;
	ps->capacity = default_sz;

	//把文件中已经存放的通讯录中的信息加载到通讯录中
	LoadContact(ps);
}

SaveContact函数(保存联系人信息到文件)

SaveContact(Contact* ps)
{
	assert(ps);
	//打开文件,以写的形式打开--(没有contact.dat的文件会自动创建一个)
	FILE* pf = fopen("Contact.dat", "w");
	if (pf == NULL)
	{
		perror("SaveContact");
		return;
	}
	//写文件
	int i = 0;
	for (i = 0; i < ps->size; i++)
	{
		fwrite(ps->data + i, sizeof(PeoInfo), 1, pf);
	}
	//关闭文件
	fclose(pf);
	pf = NULL;
}

LoadContact函数(读取文件信息到通讯录)

void LoadContact(Contact* ps)
	{
		FILE* pf = fopen("Contact.dat", "r");
		if (pf== NULL)
		{
			printf("LoadContact:");
			return;
		}

		//读取文件,存放到通讯录中
		PeoInfo tmp = { 0 };
		while (fread(&tmp, sizeof(PeoInfo), 1, pf))
		{
			CheckCapacity(ps);//要设置扩容(调用扩容函数)
			ps->data[ps->size] = tmp;
			ps->size++;
		}
		fclose(pf);
		pf = NULL;

	}

检查扩容函数

void CheckCapacity(struct Contact* ps)
{
	assert(ps);
	if (ps->size == ps->capacity)
	{
		//增容
		struct PeoInfo* ptr = realloc(ps->data, (ps->capacity + 2) * sizeof(PeoInfo));
		if (ptr != NULL)
		{
			ps->data = ptr;
			ps->capacity += 2;
			printf("增容成功\n");
		}
		else
		{
			printf("增容失败\n");
		}
	}
}

三、 程序运行结果

直接选择5,显示之前的联系人信息
C语言实现通讯录(文件版)文章来源地址https://www.toymoban.com/news/detail-428123.html

到了这里,关于C语言实现通讯录(文件版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言——通讯录详解(文件版)

    我们已经掌握了通讯录的静态版和动态版,下面我们将学习通讯录的文件版。学习了文件版,我们就不用担心退出程序后,已经添加的联系人清空了。在以前的通讯录(通讯录静态版、通讯录动态版)基础上,我们在完成两个目标就可以实现通讯录文件版。 目标: 通讯录退

    2024年02月09日
    浏览(34)
  • 【C语言】——通讯录(静态-动态增长-文件储存)

      目录 前言: 一:整体框架 关于通讯录结构体的创建  二:通讯录的功能实现(静态) 2.1初始化通讯录 2.2增加联系人 2.3打印通讯录 2.4删除联系人  2.5 查找联系人 2.6修改联系人  2.7排序联系人 三:通讯录优化——动态内存  3.1通讯录的创建 3.2初始化通讯录  3.3增加联系

    2024年02月07日
    浏览(37)
  • c语言:通讯录管理系统(文件版本)

    前言: 本通讯录管理系统一共三个版本,除此文章以外还有如下俩个版本,大家可以根据需求自取: 基础增删查改功能版本 :c语言:通讯录管理系统(增删查改)-CSDN博客 动态分配内存版本 :c语言:通讯录管理系统(动态分配内存版)-CSDN博客         本文是在基础的通

    2024年02月07日
    浏览(43)
  • 【C语言】通讯录3.0 (文件存储版)

    通讯录是一种记录联系人信息的工具,包括姓名、电话号码、电子邮件地址、住址等。 文章的一二三章均于上一篇相同,可以直接看第四章改造内容。 此通讯录是基于通讯录2.0(动态增长版)的基础上进行增加文件操作功能,请先看系列文章第二篇,再看本篇博客。 ******

    2024年02月14日
    浏览(28)
  • C语言小项目——通讯录高阶(文件管理版)

    通讯录初阶: 点这里 通讯录中阶: 点这里 contact.c test.c contact.c contact.h

    2024年02月17日
    浏览(44)
  • C语言进阶之文件操作及改造通讯录

    我们前面学习结构体时,写通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。

    2024年02月16日
    浏览(41)
  • 通讯录实现【C语言】

    目录 前言 一、整体逻辑分析 二、实现步骤 1、创建菜单和多次操作问题 2、创建通讯录 3、初始化通讯录 4、添加联系人 5、显示联系人 6、删除指定联系人 ​7、查找指定联系人 8、修改联系人信息 9、排序联系人信息 三、全部源码 我们上期已经详细的介绍了自定义类型,本

    2024年02月11日
    浏览(56)
  • C语言---认识动态内存管理并实现一个动态通讯录:静态通讯录别来沾边

    👧个人主页:@小沈熬夜秃头中୧⍤⃝❅ 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专栏:C语言学习 🔑本章内容:动态内存管理 送给各位💌:当你的能力还驾驭不了你的目标时那你就应该沉下心来历练 记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~ 提示:以下是本篇

    2024年02月08日
    浏览(85)
  • 动态通讯录实现(C语言)

    目录 前言: 一:单个节点的设计和主逻辑  结点设计 主逻辑 二:接口实现 (1)生成一个新的结点 (2)增加信息 (3)打印信息 (4)查找  (5)删除信息 (6)修改信息 (7)排序  插入排序 快速排序 (8)已有数据读取 (9)更新数据录入 三:全部代码 contact.h(声明) contact.c(接口) test.c(主逻辑) 本

    2024年02月05日
    浏览(52)
  • 通讯录(纯C语言实现)

    相信大家都有过通讯录,今天我来带大家实现以下最简单的通讯录,通过本篇文章,相信可以让大家对C语言有进一步的认识。 话不多说,我们先放函数的实现  是不是看到这里会感到很害怕??不用怕,跟着我的思路,你也可以实现它,我带着你一步一步实现每一个功能  

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包