C语言通讯录是一个使用C语言编写的简单程序,用于存储和管理联系人信息。该程序允许用户添加、删除、查找和显示通讯录中的联系人。每个联系人通常包括姓名、电话号码和电子邮件地址等基本信息。程序使用结构体来存储联系人信息,并使用数组或链表等数据结构来组织和管理通讯录。通过命令行界面与用户进行交互,用户可以通过输入命令来执行相应的操作。C语言通讯录程序可以用于个人或小型组织的信息管理,提高联系人信息的管理效率。
C语言学习视频 C语言学习资源200G C语言基础 C语言学习路线 C语言入门笔记 初识C语言 简单的C程序示例 我们编写的C代码是怎样跑起来的? 简单示例,VS2019调试C语言程序 C语言基础-数据类型 深入理解变量,变量的声明,定义,解析static的作用 C 语言未初始化的局部变量是多少? C语言中算法的基本特性和表达方式 C语言中的输入输出函数 C语言基础:循环控制语句 C语言基础:条件控制语句 C语言基础:控制语句示例 为什么程序员都不喜欢使用 switch ,而是大量的 if……else if
要编写一个通讯录项目,首先要明确我们想要达到的效果是什么样,下面我将用vs2022编译器来为大家演示一下通讯录运行时的样子:
上篇博客我们一起用C语言实现了一个固定大小的通讯录程序,这篇博客里我们将借助动态内存相关知识把他改造成可以动态增加大小的版本.
基本实现步骤同上、中两篇 【[C语言]通讯录实现(中) - CSDN App】http://t.csdnimg.cn/K5tqO
相比之前的静态版本还是动态版本。这个信息写到文件版本,无疑是更加完善的。如果你不会文件操作的话,可以看看我前面写过的内存的一篇博客来看看⇣
🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》
🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTOP创作者~周榜109﹣总榜883⇿全网访问量35w+🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠ 📝个人主页-謓泽的博客_CSDN博客 📃 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝 📣系列专栏-YY_謓泽的博客-CSDN
我们先来看一下cplusplus.com - The C++ Resources Network网站上memset()函数的基本信息:
在上次的2.0版本中,我们已经拥有了可实现动态内存操作的通讯录版本,但是每次当我们输入数据,展示数据,退出之后,我们再次执行程序,会发现我们之前输入的联系人信息丢失,需要再次输入。所以,在这次的3.0版本中我们加入了保存联系人信息的功能,这将极大的优化我们对通讯录的使用体验。
本次优化版本与上一次的1.0版本相比,改变了原有的固定内存存储通讯录联系人的方式。
我们需要一个通讯录,可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址。
目录 前言 问题描述 工具 基本框架 静态通讯录 具体实现思路与流程 准备阶段 创建联系人信息与通讯录结构体 主体 菜单界面 通讯录各功能实现 初始化通讯录(清空通讯录联系人) 添加通讯录联系人 删除通讯录联系人 查找通讯录联系人 修改联系人信息 展示通讯录联系人 排序通讯录联系人 整体效果图 附上源码 动态通讯录 通讯录结构 初始化通讯录 通讯录增容 通讯录销毁 数据保存 输出数据 输入数据(加载数据) 附上源码 ---- 前言 ---- 检验学习成果最好的方式是实践 在学习完C语言的基础知识以后
相信每个科班的同学都有过C语言课设的经历,比如教职工工资管理系统、图书信息管理系统、学生信息管理系统、通讯录系统等,其实这些课设任务的底层逻辑都是一致的,无非就是对结构体变量进行增删查改操作,同时配合文件操作将数据保存在文件夹中,本文将以通讯录举例,从静态版到文件版,让大家明白通讯录系统是如何逐步完善的。
Hello🥂謓泽👋多多指教😛 HY点赞👍收藏⭐️留言📝 ⛳通讯录✔目录 ✨前言 ✨模块化编程 🎓通讯录的逻辑实现 ✨实现通讯录の步骤 🖊创建颜色函数color() 🖊菜单界面函数menu() 🎓通讯录的定义 🖊枚举类型 🎓初始化通讯录 🎓增加通讯录的信息 🎓打印通讯录的信息 🎓删除通讯录的信息 🎓查找通讯录的信息 🎓修改指定通讯录人的信息 🎓排查通讯录当中人员的信息 ✨模块化代码实现 🖊test.c 🖊address_book.c 🖊address_book.h ✨最后✨ --
静态通讯录,信息未录入时,通过数组的形式按最大容量1000申请内存,但是不够灵活,会存在浪费内存或内存不够用的问题,对于这个问题,我们引入了动态通讯录。
golang 在云计算场景下可以说是风头无量,而且 golang 的很多设计理念基于 c,大家可能想不到,c 也是可以实现面向对象编程的,我们可以参考 golang 中面向对象来实现一波。
这就是一个通讯录菜单,这里我们可以看到它可以实现一些功能,例如增加删除联系人等等。
首先,判断通讯录是不是满了,满了给出提示,没满让用户输入联系人姓名和电话。此处不能直接使用结构体变量 Person p 这种形式,必须使用结构体指针Person* p。
用C语言模拟出来一个通讯录,首先要分头文件和源文件的,我这里分了一个头文件和两个源文件:
我们在前面的文章介绍了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。 我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。 这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。 使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。
导出的图可能有点糊,或者查看链接:https://share.weiyun.com/uhf1y2mp
我们用枚举类型将功能一一列举出来,同时每一个枚举成员也代表着对应的数字,我们在switch ...case 语句中也不用 case 1,case 2来记录每一功能对应的数字了,直接以case ADD,case DEL表示,更加直接了当。
寄存器不用全部记住,更不能死记硬背,小代玩单片机多年,还是只记住了最常用的几个寄存器的名称,具体的位设置的什么,还是没记住。在编程时需要配置寄存器的时候,可以上网找,或者书上找别人配置的程序,稍加修改,再或者查找芯片数据手册,查看相关的寄存器的说明。死记硬背寄存器是最最下策的。每种单片机有几十上百个的寄存器,学的单片机系列多了,你记得了那么多来吗?
在前面的文章中,已经讲解了动态版本的通讯录的实现,但是动态通讯录存在一个致命缺陷,就是它不能自动保存数据,而前面一篇文章中学到了数据持久化的方法之一:即把数据存放在磁盘文件上,便可以实现数据持久化。 具体应该如何做呢? 假如我们在退出的时候,通过文件操作,把我们所写的数据存在磁盘文件里,然后我们再进行下一次的使用的时候,在初始化阶段就从磁盘中读取这些数据,这不就实现了。
Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器就能在线编程。Cloud Studio 作为在线 IDE,包含代码高亮、自动补全、Git 集成、终端等 IDE 的基础功能,同时支持实时调试、插件扩展等,可以帮助开发者快速完成各种应用的开发、编译与部署工作。
首先,设计一个主程序来对于通讯录进行一个整体的设计,它的功能我们用函数来进行包装,这样可以增加代码的可读性。
从事嵌入式开发多年,用C语言编程至少十几个年头,到现在也没觉得这门编程语言已经过时了,只是从明面上讲不如以前光鲜,现在JAVA,Python等集成度比较高的编程语言慢慢占据了主流市场显得C语言过时的感觉,现在回到三线城市做个程序员,想开发个嵌入式产品,招聘C语言程序员基本上很难,大部分都是JAVA后端开发或者前端的,最后索性直接自己培养人才。
我们前面学习结构体时,写通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数 据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯 录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。
在使用C语言编写程序时,使用动态内存是不可避免的,因此了解动态内存管理函数也是必要的。
经过上一篇文章我们对顺序表有了一个初步的认识,下面我们将通过C语言实现顺序表的功能,包括: 增加数据 删除数据 查找数据 修改数据 可以把顺序表看作一种特殊的数组,我们下面将要进行的操作是基于 数组 数组操作 动态内存管理等基本功能实现的
云风最近写了一篇博客《C语言的前世今生》。作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想比较系统的谈谈个人对C语言学习方式方法的理解。分别按照书籍、实验环境搭建、网络资源来分别介绍,希望能写的比较完整全面一些,给想学习C语言的朋友一个有价值的参考。
C和C++是世界上最流行的两种编程语言。C是核心语言,c++是C语言的扩展。这两种编程语言的最大特点就是它们有着无限的可能性,这也是为什么各种形式和不同规模的企业都使用它们,因为它们具有可伸缩性和实用性。随着语言的发展,学习这门语言的人数每分钟都在增加。如果你想学习C和C++,那么选对你要读的书无疑是一个不错的选择。我们经过慎重的考虑,为你推荐(我们认为当下)最好的5本C语言书籍和5本C++书籍。这套书的覆盖面非常广。不管你的编程能力如何,你都会找到一本书来满足你的需求。
序 在简书写了一个月的blog,开始只是简单的将自己之前的笔记进行CCVV模式(command+c/v),渐渐地已经摸索出更多的套路,比如多写些demo,多加些配图,较多的知识点用思维导图做索引,markdown的语法也更加娴熟,每次整理都重新复习了下之前的知识点,也尽量让自己的思路让别人理解,所以觉得写blog还是一个比较好的习惯的,也感谢简书上这么多朋友关注,也是我继续写下去的动力,大家一起努力成为大神! ---- 一、介绍 1.在iOS中,有2个框架可以访问用户的通讯录: AddressBook
今天存在的许多C项目都是在几十年前开始的。 UNIX操作系统的开发始于1969年,其代码在1972年被重写为C语言。C语言实际上是为了将UNIX内核代码从汇编语言转换为更高级的语言而创建的,它使用更少的代码来完成相同的任务。 Oracle数据库开发于1977年开始,其代码在1983年从汇编重写为C,成为世界上最流行的数据库之一。 1985年Windows 1.0发布。尽管Windows源代码并不是公开的,但是它的内核大部分都是用C语言编写的,并且有一些部分在汇编中。Linux内核的开发始于1991年,也
前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加,删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据有得重新录入,如果使用这用的通讯录就很难受
在前面的文章中我们依次学习了结构体、动态内存管理以及文件操作的相关知识,所以我们今天可以分别来编写静态版、动态版和文件版的通讯录,用于对已学知识的应用与巩固,和对我们前面学习效果的检测。
篇一:51单片机毕业设计题目2 1、基于51单片机温湿度检测的设计 1、设计要求 1、采用51单片机(STC89C52RC)+LCD12864+SHT10设计。 2、湿度范围:0-100%RH 温度:0-100摄氏度 3、4个发光二级管实现报警:高温报警、低温报警、高湿度报警、低湿度报警共8种报警状态。 4、3个按键实现温湿度上下限报警值的调节。 5、电脑USB供电 6、采用C语言编程。 2、基于51单片机温湿度检测+数字钟的设计 设计要求 1、采用51单片机(STC89C52RC)+LCD12864+SHT10设计。 2、湿度范围:0-100%RH 温度:0-100摄氏度 3、4个发光二级管实现报警:高温报警、低温报警、高湿度报警、低湿度报警共8种报警状态。 4、3个按键实现温湿度上下限报警值和数字钟时分秒的调节。 5、时分秒显示 6、电脑USB供电 7、采用C语言编程。 3、基于51单片机温湿度检测+电子万年历的设计 1、设计要求 1、采用51单片机(STC89C52RC)+LCD12864+SHT10+DS1302设计。 2、湿度范围:0-100%RH 温度:0-100摄氏度 3、4个发光二级管实现报警:高温报警、低温报警、高湿度报警、低湿度报警共8种报警状态。 4、3个按键实现温湿度上下限报警值和电子万年历时分秒星期年月日的调节。 5、年、月、日、时、分、秒、星期、温度、湿度显示 6、电脑USB供电 7、采用C语言编程。 4、基于51单片机温湿度检测+数字电压表的设计 1、设计要求 1、采用51单片机(STC89C52RC)+LCD12864+SHT10+ADC0832设计。 2、湿度范围:0-100%RH 温度:0-100摄氏度 3、4个发光二级管实现报警:高温报警、低温报警、高湿度报警、低湿度报警共8种报警状态。 4、3个按键实现温湿度上下限报警值的调节。 5、电压、温度、湿度显示。 6、电压范围直流0-5伏。(另有0-220伏) 7、电脑USB供电 8、采用C语言编程。 5、基于51单片机数字温度计的设计 1、设计要求 1、采用51单片机(STC89C52RC)+LCD12864+DS18B20设计。 2、温度:0-99摄氏度 3、3个发光二级管和蜂鸣器实现报警:高温报警、低温报警、正常共3种报警状态。 4、3个按键实现温度上下限报警值的调节。 5、湿度显示。 6、电脑USB供电 7、采用C语言编程。 6、基于51单片机数字温度计+数字钟的设计 1、设计要求 1、采用51单片机(STC89C52RC)+LCD12864+DS18B20设计。 2、温度:0-99摄氏度 3、3个发光二级管和蜂鸣器实现报警:高温报警、低温报警、正常共3种报警状态。 4、3个按键调整温度上下限值和数字钟时分秒值的调整。(按键有提示音) 5、湿度、时分秒显示。 6、电脑USB供电 7、采用C语言编程。 7、基于51单片机数字温度计+数字电压表的设计 1、设计要求 1、采用51单片机(STC89C52RC)+LCD12864+DS18B20+ADC0832设计。 2、温度:0-99摄氏度 电压范围:0-220伏直流电压 3、3个发光二级管和蜂鸣器实现报警:高温报警、低温报警、正常共3种报警状态。 4、3个按键实现温度上下限报警值的调节。 5、湿度、电压显示。 6、电脑USB供电 7、采用C语言编程。 8、基于51单片机超声波测距的设计 1、设计任务 1、采用51单片机+4位共阳数码管+ HC-SR04超声波模块。 2、测距范围2cm-450cm。 3、超出测量范围显示“-.–”;正常测量范围显示“x.xx”(单位:米)。 4、51单片机:STC89C52RC、AT89S52、AT89C51。 5、C语言编程。 6、电脑USB供电。 9、基于51单片机超声波测距的设计 1、设计任务 1、采用51单片机+LCD1602液晶+ HC-SR04超声波模块。 2、测距范围2cm-450cm。 3、超出测量范围显示“-.–M”;正常测量范围显示“x.xxM”(单位:米)。 4、51单片机:STC89C52RC、AT89S52、AT89C51。 5、C语言编程。 6、电脑USB供电。 10、基于51单片机超声波测距的设计 1、设计任务 1、采用51单片机+LCD12864液晶+ HC-SR04超声波模块。
曾经你是否有过学习一门新事物的兴奋感,但是学习一段时间后,这种学习动力逐渐衰减,直至放弃呢?或是你是属于那种听到学习编程很难,但是不得不学,于是硬着头皮听听学学,一旦遇到困难,就为自己找到了退缩的借口呢?如果没有以上情况,那么恭喜你应该是一名学习的强者,学习C语言对你来说肯定不在话下。但如果你是对C语言编程畏惧的,也没有关系,不妨让自己尝试一下看看,同时坚信并想象自己把C语言学好以后无所不能的无以言表的幸福感。一开始你只要从简单的地方步入,一步步认识C语言编程,不求进度而只求学习质量,把基础打牢固,这种学习方式虽然看似很慢,但是却是后续厚积薄发的重要基础!
顺序表的底层是数组—决定了其作为可以存储不单一数据的结构体的特性—从简单的顺序表变成通讯录
对于测试部分,改动的地方在于销毁通讯录之前,需要把通讯录的内容保存到文件中,所以在销毁通讯录的函数前加了一个SaveContact函数保存通讯录;函数的具体实现看函数实现部分;
思路有了,那么我们先来打一个框架 先用printf实现一个菜单 这个菜单可以帮助我们更方便地使用通讯录,可理解为指引功能。接着,功能的选择,我们可以用switch实现 其次,这个通讯录,我们想让它一直进行下去,直到使用者不想用了,所以写一个循环 综上所述,代码实现我们可以写成这般
在调用GetMemory函数时,传的是str的值,p是str的一份临时拷贝,p里面放的也是NULL,接着,把malloc开辟空间的地址给了p,但是str还是NULL,那么strcpy中的str就是NULL,就会对空指针进行解引用操作;同时,动态申请的内存空间没有释放,存在内存泄漏的问题(而且出了GetMemory函数之后想释放也释放不了,因为p所在的那块内存空间已经被销毁了,已经还给操作系统了)。
学习了顺序表之后,我们也得知道它的实际用途吧!所以,我们今天来学习一下通讯录的实现。
首先我们创建contact.c和test.c,contact.h,在头文件中包含了程序所需的各种头文件并且实现对各种函数的声明,而源文件test.c用于引用函数,contact.c实现函数。这样做的目的是为了各个文件可以处理各自模块的功能,增强逻辑性和代码的清晰度,使得可读性更高。
本文介绍的通讯录管理系统分为两个版本,分别是 ExtJS 版本和 Vue.js 版本。
学结构体学了这么久,终于要用结构体做点东西了。接下来就用结构体的知识实现一个简陋的通讯录。
完整思维导图:https://github.com/dotnet9/TerminalMACS/blob/master/docs/TerminalMACS.xmind
领取专属 10元无门槛券
手把手带您无忧上云