当前位置: 首页 > news >正文

佛山响应式网站设计网页视频怎么下载到电脑

佛山响应式网站设计,网页视频怎么下载到电脑,个人网站策划书范文,建设网站公开教学视频前言 通讯录是一种记录联系人信息的工具#xff0c;包括姓名、电话号码、电子邮件地址、住址等。 文章的一二三章均于上一篇相同#xff0c;可以直接看第四章改造内容。 此通讯录是基于通讯录1.0#xff08;静态版#xff09;的基础上进行改进#xff0c;请先看系列文字第…前言 通讯录是一种记录联系人信息的工具包括姓名、电话号码、电子邮件地址、住址等。 文章的一二三章均于上一篇相同可以直接看第四章改造内容。 此通讯录是基于通讯录1.0静态版的基础上进行改进请先看系列文字第一篇再看本篇博客。 ****** 有需要源代码见文章末尾 ****** 系列文章目录 第一篇【C语言】通讯录1.0 静态版 第二篇【C语言】通讯录2.0 动态增长版 第三篇【C语言】通讯录2.0 文件存储版 文章目录 前言系列文章目录一、什么是通讯录二、静态版、动态增长版和文件存储版的区别1. 静态版2. 动态增长版3. 文件存储版 三、通讯录模块组成图文1. 通讯录文件构成2. 通讯录个人信息3. 通讯录功能模块 四、如何改造通讯录1.0改造目标1. 改造目标2. 需要的改造部分 五、如何改进代码演示1. 通讯录结构模块2. 通讯录初始化函数3. 增加联系人函数4. 添加内存释放函数 六、所有文件代码1. 头文件2. 函数文件3. 测试逻辑文件 总结 一、什么是通讯录 通讯录是一种记录联系人信息的工具包括姓名、电话号码、电子邮件地址、住址等。通讯录可以帮助人们管理自己的联系人让人们更轻松地与他人保持联系。通讯录可以在手机、电脑、笔记本等设备上保存也可以在云端储存和同步方便用户随时查看和更新联系人信息。 二、静态版、动态增长版和文件存储版的区别 C语言静态版、动态增长版和文件存储版的区别如下 1. 静态版 静态版在程序编译时就确定了内存大小程序运行期间内存大小不会发生变化因此对于需要处理大量数据或者不确定数据大小的情况不适用。 2. 动态增长版 动态增长版可以在程序运行期间根据需要动态增加内存大小因此适用于处理不确定数据大小的情况。但是动态增长的内存需要手动释放否则会导致内存泄漏。 3. 文件存储版 文件存储版将数据存储在文件中可以持久保存数据并随时读取。但是存储在文件中的数据需要进行IO操作因此相比于内存操作来说效率较低。此外文件存储版不适用于需要频繁修改的数据。 三、通讯录模块组成图文 1. 通讯录文件构成 2. 通讯录个人信息 3. 通讯录功能模块 四、如何改造通讯录1.0改造目标 1. 改造目标 通讯录的空间不是固定的大小是可以调整的默认能放3个人的信息如果不够就每次增加2个人的信息 2. 需要的改造部分 五、如何改进代码演示 1. 通讯录结构模块 将通讯录的存储方式改成动态增长用指针来调用需要增加通讯录的现有的容量值 //动态版 typedef struct Contact {PeoInfo* data;int sz;int capacity;}Contact;2. 通讯录初始化函数 本来初始化通讯录是使用内存函数memset来实现现在由malloc动态内存函数来动态开辟内存初始化设置容量为3个联系人的容量 //动态版 void InitContact(Contact* pc) {assert(pc);pc-data (PeoInfo*)malloc(3 * sizeof(PeoInfo));if (pc-data NULL){perror(InitContact);return;}pc-capacity 3;pc-sz 0; }3. 增加联系人函数 本来前提是判断是否通讯录已满现在改为判断当通讯录容量满的时候增加动态内存需要写一个函数来判断容量是否已满当容量已满的时候。使用realloc动态内存函数来增加动态内存 //动态版 void AddContact(Contact* pc) {assert(pc); //断言if (determine(pc) 0){return;}printf(请输入姓名);scanf(%s, pc-data[pc-sz].name);printf(请输入年龄);scanf(%d, (pc-data[pc-sz].age));printf(请输入性别);scanf(%s, pc-data[pc-sz].sex);printf(请输入电话);scanf(%s, pc-data[pc-sz].tele);printf(请输入地址);scanf(%s, pc-data[pc-sz].addr);pc-sz; //通讯录加1printf(联系人增加成功\n); }//判断内存是否已满函数 int determine(Contact* pc) {assert(pc);if (pc-capacity pc-sz){PeoInfo* ptr (PeoInfo*)realloc(pc-data, (pc-capacity 2) * sizeof(PeoInfo));if (ptr NULL){perror(determine);return 0;}else{pc-capacity 2;pc-data ptr;printf(增容成功\n);return 1;}}return 1; }4. 添加内存释放函数 在通讯录菜单栏选择退出 0 通讯录时要释放内存也要将容量和size 归零需要写一个函数来进行这个操作 void DestroyContact(Contact* pc) {free(pc-data);pc-data NULL;pc-capacity 0;pc-sz; }六、所有文件代码 1. 头文件 #pragma once #includestdio.h #includeassert.h #includestring.h #includestdlib.h#define MAX 100 #define NAME 10 #define SEX 5 #define TELE 12 #define ADDR 30 //使用枚举 定义选择 enum OPTION {EXIT,//0ADD,DEL,SEARCH,MODIFY,SHOW,SORT };//个人信息类型声明 typedef struct PeoInfo {char name[NAME];int age;char sex[SEX];char tele[TELE];char addr[ADDR]; }PeoInfo;//建立通讯录 //静态版 //typedef struct Contact //{ // PeoInfo data[MAX]; //通讯录数量 // int sz; //目前通讯录内的人数 //}Contact; //动态版 typedef struct Contact {PeoInfo* data;int sz;int capacity;}Contact;//函数声明//初始化通讯录 void InitContact(Contact* pc);//增加联系人 void AddContact(Contact* pc);//显示所有联系人的信息 void ShowContact(const Contact* pc);//删除指定联系人 void DelContact(Contact* pc);//查找指定联系人 void SearchContact(const Contact* pc);//修改指定联系人 void ModifyContact(Contact* pc);//释放内存void DestroyContact(Contact* pc);2. 函数文件 #define _CRT_SECURE_NO_WARNINGS 1 #include addbook.hint determine(Contact* pc) {assert(pc);if (pc-capacity pc-sz){PeoInfo* ptr (PeoInfo*)realloc(pc-data, (pc-capacity 2) * sizeof(PeoInfo));if (ptr NULL){perror(determine);return 0;}else{pc-capacity 2;pc-data ptr;printf(增容成功\n);return 1;}}return 1; } //静态版 //void InitContact(Contact* pc) //{ // assert(pc); //断言 // memset(pc-data, 0, sizeof(pc-data)); //内存函数 data初始化为0 // pc-sz 0; //} //动态版 void InitContact(Contact* pc) {assert(pc);pc-data (PeoInfo*)malloc(3 * sizeof(PeoInfo));if (pc-data NULL){perror(InitContact);return;}pc-capacity 3;pc-sz 0; } //动态版 void AddContact(Contact* pc) {assert(pc); //断言if (determine(pc) 0){return;}printf(请输入姓名);scanf(%s, pc-data[pc-sz].name);printf(请输入年龄);scanf(%d, (pc-data[pc-sz].age));printf(请输入性别);scanf(%s, pc-data[pc-sz].sex);printf(请输入电话);scanf(%s, pc-data[pc-sz].tele);printf(请输入地址);scanf(%s, pc-data[pc-sz].addr);pc-sz; //通讯录加1printf(联系人增加成功\n); }//静态版 //void AddContact(Contact* pc) //{ // assert(pc); //断言 // if (pc-sz MAX) //如果通讯录已经满了 则返回 // { // printf(通讯录已满无法添加\n); // return; // } // printf(请输入姓名); // scanf(%s, pc-data[pc-sz].name); // printf(请输入年龄); // scanf(%d, (pc-data[pc-sz].age)); // printf(请输入性别); // scanf(%s, pc-data[pc-sz].sex); // printf(请输入电话); // scanf(%s, pc-data[pc-sz].tele); // printf(请输入地址); // scanf(%s, pc-data[pc-sz].addr); // pc-sz; //通讯录加1 // printf(联系人增加成功\n); //} //搜索名字找通讯录函数 static int Findname(const Contact* pc, char na[]) {int i 0;assert(pc na);for (i 0; i pc-sz; i){if (strcmp(pc-data[i].name, na) 0){return i;}}return -1; } void DelContact(Contact* pc) {if (pc-sz 0){printf(通讯录为空\n);return;}char name[NAME] { 0 };assert(pc);//输入要查找的联系人名字printf(请输入要查找的名字);scanf(%s, name);//找到要查找的联系人int del Findname(pc, name);//删除坐标位子的联系人 将后面的联系人进行代替其位置if (del -1){printf(找不到此人不存在\n);return;}else{int i 0;for (i del; i pc-sz; i){pc-data[i] pc-data[i 1];}pc-sz--;}printf(成功删除联系人\n); } void ShowContact(const Contact* pc) {assert(pc);printf(%-10s\t%-4s\t%-5s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);int i 0;for (i 0; i pc-sz; i){printf(%-10s\t%-4d\t%-5s\t%-12s\t%-30s\n,pc-data[i].name,pc-data[i].age,pc-data[i].sex,pc-data[i].tele,pc-data[i].addr);}printf(通讯录展示完毕\n); } void SearchContact(const Contact* pc) {if (pc-sz 0){printf(通讯录为空\n);return;}char name[NAME] { 0 };assert(pc);//输入要查找的联系人名字printf(请输入要查找的名字);scanf(%s, name);//找到要查找的联系人int i Findname(pc, name);if (i -1){printf(找不到此人不存在\n);return;}else{printf(%-10s\t%-4s\t%-5s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);printf(%-10s\t%-4d\t%-5s\t%-12s\t%-30s\n,pc-data[i].name,pc-data[i].age,pc-data[i].sex,pc-data[i].tele,pc-data[i].addr);}printf(成功找到联系人\n); } void ModifyContact(Contact* pc) {assert(pc);char name[NAME] { 0 };printf(请输入要修改人的名字:);scanf(%s, name);int mod Findname(pc, name);if (mod -1){printf(找不到,不存在\n);return;}else{printf(请输入姓名);scanf(%s, pc-data[mod].name);printf(请输入年龄);scanf(%d, (pc-data[mod].age));printf(请输入性别);scanf(%s, pc-data[mod].sex);printf(请输入电话);scanf(%s, pc-data[mod].tele);printf(请输入地址);scanf(%s, pc-data[mod].addr);printf(联系人修改成功\n);} } void DestroyContact(Contact* pc) {free(pc-data);pc-data NULL;pc-capacity 0;pc-sz; }3. 测试逻辑文件 #define _CRT_SECURE_NO_WARNINGS 1 #includeaddbook.h void menu() {printf(********************************\n);printf(***** 1. ADD 2. DEL *****\n);printf(***** 3. SEARCH 4. MODIFY *****\n);printf(***** 5. SHOW 6. SORT *****\n);printf(***** 0. EXIT *****\n);printf(********************************\n);}void test() {int input 0;Contact con;InitContact(con);do{menu();printf(请选择);scanf(%d, input);switch (input){case ADD:AddContact(con);break;case DEL:DelContact(con);break;case SEARCH:SearchContact(con);break;case MODIFY:ModifyContact(con);break;case SHOW:ShowContact(con);break;case SORT:printf(功能待开发\n);break;case EXIT:DestroyContact(con);printf(成功退出通讯录\n);break;default:printf(输入错误请重新输入\n);break;}} while (input);} int main() {test();return 0; }总结 本期博客是通讯录2.0动态增长版是对前面所学知识进行复习编写通讯录时有助于理解自定义类型和动态内存管理的学习和了解,后期会对现在的通讯录进行更新 如这篇博客对大家有帮助的话希望 三连 支持一下 如果有错误感谢大佬的斧正 如有 其他见解发到评论区一起学习 一起进步。
http://www.hkea.cn/news/14591856/

相关文章:

  • 高端网站改版网站备案通管局
  • 做网站应聘平台上海电子商务网站开发
  • 用vs2010做网站应用程序脱机建设银行E路航如何自动进入网站
  • 虎牙网页游戏大厅淄博网站排名优化
  • 网站链接结构怎么修改网站的域名
  • dede网站名称海城整站优化
  • 越秀手机网站建设最好的app开发公司
  • 自动发卡网站怎么做中国百强城市榜单发布2021
  • 可信的移动网站建设广西壮族自治区简称
  • c 网站建设教程视频余江县建设局网站
  • 深圳网站公司好能打开任何网站浏览器
  • 惠州网站建设咨询建设学校网站方案
  • 做淘宝还是京东还是做网站安全证查询官网
  • 科技公司网站主页设计做网站送给女友意义
  • 如何做自己的vip视频解析网站湖南最新消息今天
  • 电子商务网站开发课程设计论文网页设计怎样做一个网页
  • 做公司 网站建设公司网站建站软件
  • 创意 国外 网站iis7.5部署网站
  • 邢台做移动网站的地方为什么网站有不同的扩展名
  • 中英企业网站模板成立网站建设领导小组的通知
  • 网站首页效果图怎么做WordPress给文章添加省份
  • 微网站ui多少钱wordpress中修改内容
  • 儿童主题网站的内容建设山东省建设业协会网站
  • 经验丰富的网站制作公司重庆排名前十的互联网公司
  • 天河网站建设哪家强网站建设续签合同怎么签
  • 网站建设的宗旨四川城乡建设厅官方网站
  • 公司网站推广技巧英文网站建设需要准备什么
  • 微课网站建设项目怎样做网络推广效果好
  • 做游戏必备的几个网站网站开发交易网站
  • asp.net网站开发教程 pdf杭州市前10电商代运营公司