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

免费软件站wordpress缓存无法清除缓存

免费软件站,wordpress缓存无法清除缓存,网络营销服务的特点,成都网络推广外包公司哪家好一、思路 1.文件 这里由于通讯录实现代码较长#xff0c;因此分三个文件进行#xff0c;contact.c用于实现通讯录主体代码#xff0c;声明各项头文件用contact.h实现#xff0c;测试用test.c 二.功能 增加联系人删除联系人修改联系人查找指定联系人排序显示通讯录的信息…一、思路 1.文件 这里由于通讯录实现代码较长因此分三个文件进行contact.c用于实现通讯录主体代码声明各项头文件用contact.h实现测试用test.c 二.功能 增加联系人删除联系人修改联系人查找指定联系人排序显示通讯录的信息 三.分步实现代码 1.初始化结构体 通讯录中每个联系人的信息至少包括姓名、年龄、性别、电话、住址。 我们可以将这些内容定义为一个结构体因为每个联系人的信息都有这几个要素 #define NAME_MAX 20 #define SEX_MAX 20 #define TELE_MAX 20 #define ADDR_MAX 20typedef struct PeoInfo {char name[NAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX]; }PeoInfo; typedef是定义结构体类型由struct PeoInfo--- PeoInfo 这样后面使用定义变量时类型就直接写PeoInfo就可以了 数组【】里面如果是常量 那就后期想修改是非常不方便的所以我们自己定义NAME_MAX等后期修改起来更加方便。 但当我们操作通讯录联系人时需要知道联系人是否达到上限如果达到则无法再添加联系人 因此我们将联系人的信息与通讯录已有联系人个数联系一同放入结构体避免后续功能需同时传入两个变量 #define MAX 100 typedef struct Contact {PeoInfo data[MAX];//存放数据int sz;//记录当前通讯录中存放的人的信息个数 }Contact;//通讯录 因此后续访问通讯录信息时即可通过contact访问data然后访问信息。 2.InitContact初始化个人信息的声明 //初始化通讯录 void InitContact(struct Contact* ps) {memset(ps-data, 0, sizeof(ps-data));//将待用内存空间设置为0ps-size 0;//设置通讯录最初只有0个元素 }3.添加联系人的信息 最初应该通讯录判断已有联系人是否达到上线即用ps-size达到则无法添加否则就输入待添加联系人的信息最后添加完成size //添加一个联系人的信息 void AddContact(struct Contact* ps) {if (ps-size 1000){printf(通讯录已满无法添加\n);}//通讯录内联系人已达上限else{printf(请输入姓名:);scanf(%s, ps-data[ps-size].name);printf(请输入年龄:);scanf(%d, (ps-data[ps-size].age));printf(请输入性别:);scanf(%s, ps-data[ps-size].sex);printf(请输入电话:);scanf(%s, ps-data[ps-size].tele);printf(请输入地址:);scanf(%s, ps-data[ps-size].address);ps-size;//通讯录中联系人个数1printf(添加成功\n);} }4.删除联系人的信息 我们需要用户输入待删除联系人的名字并在通讯录中查找是否存在该名字的联系人。因为后面还会有此相同的操作所以将其封装为一个函数避免代码冗余删除完成就size-- 接着就是实现删除我们只需通过输入字符串名字来找到该联系人所在下标记录下来然后来个for循环从后往前覆盖并且防止越界j应该小于size-1。 int FindByName(char name[15],const struct Contact* ps) {int i 0;for (i 0; i ps-size; i){if (strcmp(ps-data[i].name, name) 0)return i;//找到了返回下标}return -1;//找不到的情况 }//删除一个联系人的信息 void DeleteContact(struct Contact* ps) {char name[15];printf(请输入要删除联系人的姓名:);scanf(%s, name);//查找int pos FindByName(name, ps);//找到了返回下标没找到返回-1//删除if (pos -1){printf(未找到该联系人\n);}else{int j 0;for (j pos; j ps-size - 1; j){ps-data[j] ps-data[j 1];}//从要删除的联系人位置开始后一位联系人信息覆盖前一个联系人信息printf(删除成功\n);ps-size--;//通讯录中联系人个数-1} }5.查找指定联系人并打印其信息 首先我们也需要用户输入待查找联系人的名字如果存在此人我们就将其信息打印出来。 //查找指定联系人并打印其信息 void SreachContact(const struct Contact* ps) {char name[15];printf(请输入要查找联系人的姓名:);scanf(%s, name);int pos FindByName(name, ps);//找到了返回下标没找到返回-1if (pos -1){printf(查无此人\n);}else{printf(%-15s\t%-4s\t%-5s\t%-12s\t%-20s\n, 姓名, 年龄, 性别, 电话, 住址);printf(%-15s\t%-4d\t%-5s\t%-12s\t%-20s\n,ps-data[pos].name,ps-data[pos].age,ps-data[pos].sex,ps-data[pos].tele,ps-data[pos].address);}//打印该联系人的信息内容 }6.修改指定联系人的信息 要修改联系人信息自然也要先在通讯录中找到该联系人如果找到了我们就将该联系人信息重新录入一次就行了。 //修改指定联系人的信息 void ModifyContact(struct Contact* ps) {char name[15];printf(请输入要修改的联系人的姓名:);scanf(%s, name);int pos FindByName(name, ps);//找到了返回下标没找到返回-1if (pos -1){printf(查无此人\n);}else{printf(请输入姓名:);scanf(%s, ps-data[pos].name);printf(请输入年龄:);scanf(%d, (ps-data[pos].age));printf(请输入性别:);scanf(%s, ps-data[pos].sex);printf(请输入电话:);scanf(%s, ps-data[pos].tele);printf(请输入地址:);scanf(%s, ps-data[pos].address);printf(修改成功\n);}//修改联系人信息即将该联系人信息重新录入 }7.打印通讯录中的全部信息 首先判断通讯录是否为空如果没有联系人那就没有打印的必要了。如果通讯录不为空我们首先打印一排信息栏接下来循环size次即联系人个数次打印每个联系人的信息即可。 //打印通讯录中的全部信息 void ShowContact(const struct Contact* ps) {if (ps-size 0){printf(通讯录为空\n);}//通讯录中联系人个数为0else{printf(%-15s\t%-4s\t%-5s\t%-12s\t%-20s\n, 姓名, 年龄, 性别, 电话, 住址);//打印信息栏int i 0;for (i 0; i ps-size; i){printf(%-15s\t%-4d\t%-5s\t%-12s\t%-20s\n,ps-data[i].name,ps-data[i].age,ps-data[i].sex,ps-data[i].tele,ps-data[i].address);}//打印通讯录全部信息内容} } 8.通过名字排序通讯录中联系人的先后顺序 这个排序功能我们可以借助于已有的qosrt函数进行排序只需要写一个自定义的比较函数即可。 //自定义的比较函数 int CmpByName(const void* e1, const void* e2) {return strcmp((const char*)e1, (const char*)e2); }//通过名字排序通讯录中联系人的先后顺序 void SortContact(struct Contact* ps) {qsort(ps-data, ps-size, sizeof(struct PeoInfo), CmpByName);//排序 }四.整体代码 contact.h #define _CRT_SECURE_NO_WARNINGS 1#define MAX 1000#define MAX_NAME 15 #define MAX_SEX 5 #define MAX_TELE 12 #define MAX_ADDRESS 20#include stdio.h #include string.h #include stdlib.henum Option {EXIT,//0ADD,//1DELETE,//2SREACH,//3MODIFY,//4SHOW,//5SORT//6 };//增加代码可读性struct PeoInfo {char name[MAX_NAME];int age;char sex[MAX_SEX];int tele[MAX_TELE];char address[MAX_ADDRESS]; };//每一个联系人的信息内容//通讯录类型 struct Contact {struct PeoInfo data[MAX];//存放1000个联系人的信息int size;//记录当前已有联系人的个数 };//初始化通讯录 void InitContact(struct Contact* ps);//添加一个联系人的信息 void AddContact(struct Contact* ps);//删除一个联系人的信息 void DeleteContact(struct Contact* ps);//查找指定联系人并打印其信息 void SreachContact(const struct Contact* ps);//修改指定联系人的信息 void ModifyContact(struct Contact* ps);//打印通讯录中的全部信息 void ShowContact(const struct Contact* ps);//通过名字排序通讯录中联系人的先后顺序 void SortContact(struct Contact* ps);contact.c #include contact.h//初始化通讯录 void InitContact(struct Contact* ps) {memset(ps-data, 0, sizeof(ps-data));//将待用内存空间设置为0ps-size 0;//设置通讯录最初只有0个元素 }//添加一个联系人的信息 void AddContact(struct Contact* ps) {if (ps-size MAX){printf(通讯录已满无法添加\n);}//通讯录内联系人已达上限else{printf(请输入姓名:);scanf(%s, ps-data[ps-size].name);printf(请输入年龄:);scanf(%d, (ps-data[ps-size].age));printf(请输入性别:);scanf(%s, ps-data[ps-size].sex);printf(请输入电话:);scanf(%s, ps-data[ps-size].tele);printf(请输入地址:);scanf(%s, ps-data[ps-size].address);ps-size;//通讯录中联系人个数1printf(添加成功\n);} }//通过名字查找联系人找到了返回下标没找到返回-1 static int FindByName(char name[MAX_NAME],const struct Contact* ps) {int i 0;for (i 0; i ps-size; i){if (strcmp(ps-data[i].name, name) 0)return i;//找到了返回下标}return -1;//找不到的情况 }//删除一个联系人的信息 void DeleteContact(struct Contact* ps) {char name[MAX_NAME];printf(请输入要删除联系人的姓名:);scanf(%s, name);//查找int pos FindByName(name, ps);//找到了返回下标没找到返回-1//删除if (pos -1){printf(查无此人\n);}else{int j 0;for (j pos; j ps-size - 1; j){ps-data[j] ps-data[j 1];}//从要删除的联系人位置开始后一位联系人信息覆盖前一个联系人信息printf(删除成功\n);ps-size--;//通讯录中联系人个数-1} }//查找指定联系人并打印其信息 void SreachContact(const struct Contact* ps) {char name[MAX_NAME];printf(请输入要查找联系人的姓名:);scanf(%s, name);int pos FindByName(name, ps);//找到了返回下标没找到返回-1if (pos -1){printf(查无此人\n);}else{printf(%-15s\t%-4s\t%-5s\t%-12s\t%-20s\n, 姓名, 年龄, 性别, 电话, 住址);printf(%-15s\t%-4d\t%-5s\t%-12s\t%-20s\n,ps-data[pos].name,ps-data[pos].age,ps-data[pos].sex,ps-data[pos].tele,ps-data[pos].address);}//打印该联系人的信息内容 }//修改指定联系人的信息 void ModifyContact(struct Contact* ps) {char name[MAX_NAME];printf(请输入要修改的联系人的姓名:);scanf(%s, name);int pos FindByName(name, ps);//找到了返回下标没找到返回-1if (pos -1){printf(查无此人\n);}else{printf(请输入姓名:);scanf(%s, ps-data[pos].name);printf(请输入年龄:);scanf(%d, (ps-data[pos].age));printf(请输入性别:);scanf(%s, ps-data[pos].sex);printf(请输入电话:);scanf(%s, ps-data[pos].tele);printf(请输入地址:);scanf(%s, ps-data[pos].address);printf(修改成功\n);}//修改联系人信息即将该联系人信息重新录入 }//打印通讯录中的全部信息 void ShowContact(const struct Contact* ps) {if (ps-size 0){printf(通讯录为空\n);}//通讯录中联系人个数为0else{printf(%-15s\t%-4s\t%-5s\t%-12s\t%-20s\n, 姓名, 年龄, 性别, 电话, 住址);//打印信息栏int i 0;for (i 0; i ps-size; i){printf(%-15s\t%-4d\t%-5s\t%-12s\t%-20s\n,ps-data[i].name,ps-data[i].age,ps-data[i].sex,ps-data[i].tele,ps-data[i].address);}//打印通讯录全部信息内容} }//自定义的比较函数 int CmpByName(const void* e1, const void* e2) {return strcmp((const char*)e1, (const char*)e2); }//通过名字排序通讯录中联系人的先后顺序 void SortContact(struct Contact* ps) {qsort(ps-data, ps-size, sizeof(struct PeoInfo), CmpByName);//排序 }test.c #include contact.hvoid menu() {printf(|-----------------------|\n);printf(| contact |\n);printf(| 1.Add 2.Delete |\n);printf(| 3.Search 4.Modify |\n);printf(| 5.Show 6.Sort |\n);printf(| 0.Exit |\n);printf(|-----------------------|\n); }//打印菜单int main() {int input 0;//创建通讯录struct Contact con;//con就是通讯录里面包含1000个元素的数组和size//初始化通讯录InitContact(con);do{menu();printf(请选择:);scanf(%d, input);switch (input){case ADD:AddContact(con);break;case DELETE:DeleteContact(con);break;case SREACH:SreachContact(con);break;case MODIFY:ModifyContact(con);break;case SHOW:ShowContact(con);break;case SORT:SortContact(con);break;case EXIT:printf(退出通讯录\n);break;default:printf(选择错误请重新选择\n);break;}} while (input);return 0; }最后运用枚举可以增加代码可读性因为你如果用123等用户可能不明白意思。但是用枚举实现既符合你输入习惯又规范 用宏定义来定义一些数据是为了方便后续修改。
http://www.hkea.cn/news/14366369/

相关文章:

  • 58网站一起做网店建立网站和新媒体信息发布制度
  • 网站建设入什么会计科目友情链接代码美化
  • 学会网站 建设seo手机关键词网址
  • 山西太原制作网站人有吗软件开发周期包括哪几个阶段
  • 网站首页设计收费小说网站怎么做推广
  • 企业网站模板免费下载企业网站模板wordpress代码添加文章字段栏目
  • 网站用不用备案谁的网站模板利于优化
  • wap网站排名shopify网站建设
  • 如何开wordpress网站网络营销网站建设存在问题
  • 北京网站营销seo方案怎么为一个网站做外链
  • 网站改版意义广州大型网站制作公司
  • 重庆网站制作设计公司班级优化大师网页版
  • 温州免费做网站平面设计师招聘信息
  • 网站建设设计报告前言青岛网站开发招聘
  • 做网站图片切图可以用中文吗策划案怎么做
  • 外国做图网站广点通广告投放平台
  • 格尔木市建设局网站门户网站具有什么特点
  • 济南网站制作哪家最好免费个人网站注册方法
  • 什么是一学一做视频网站安徽省建设工程信息网公共服务平台
  • 西安网站定制星裕建设网站
  • 网站备案时间就是正式上线时间吗龙岩网站设计较好的公司
  • 仿做网站的网站桂林市卫生学校
  • 网站建设08国内免费建站平台
  • 中国空间站图片wordpress 显示所有分类
  • 谁能给做网站成都代做网站
  • 常用的做网站的工具都有哪些浙江天力建设集团有限公司网站
  • 特网站建设做文案的网站
  • 辽阳企业网站建设团队网页微信支付
  • 彩票网站建设平台个人网站开发 怎么赚钱
  • 做毕设最常去的几个网站外贸 网站 seo