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

网上有免费的网站吗网络推广怎么入门

网上有免费的网站吗,网络推广怎么入门,营销型网站建设价格是多少,云南哪几个建网站公司通讯录 1. 添加一个函数#xff0c;在退出通讯录的时候把信息到保存到文件中 2. 添加一个函数#xff0c;在通讯录打开的时候#xff0c;可以把文件中的信息加载到通讯录中 contact.h文件 #pragma once #include string.h #include stdio.h #include 在退出通讯录的时候把信息到保存到文件中 2. 添加一个函数在通讯录打开的时候可以把文件中的信息加载到通讯录中 contact.h文件 #pragma once #include string.h #include stdio.h #include assert.h #include stdlib.h#define DEFAULT_SZ 3 #define INC_SZ 2 #define MAX 100 #define MAX_NAME 20 #define MAX_SEX 10 #define MAX_TELE 12 #define MAX_ADDR 30//类型的声明 typedef struct PeoInfo//创建人的信息并重命名 {char name[MAX_NAME];int age;char sex[MAX_SEX];char tele[MAX_TELE];char addr[MAX_ADDR]; }PeoInfo;//文件版本沿用动态版本 //1. 通讯录默认能存放3个人的信息 //2. 如果空间不够就增加空间每次增加2个人的空间 typedef struct Contact {PeoInfo* data;//不能是数组数组是固定大小。改为结构体指针这样指针就可以指向动态内存函数开辟的空间int count;//记录当前通讯录中实际人的个数。//还需要一个变量记录当前的容量因为当count等于当前容量时就需要增容int capacity; }Contact;//初始化通讯录 - 文件版本沿用动态版本 int InitContact(Contact* pc);//销毁通讯录 void DestroyContact(Contact* pc);//增加联系人到通讯录 void AddContact(Contact* pc);//打印通讯录 void ShowContact(const Contact* pc);//删除指定联系人 void DelContact(Contact* pc);//查找指定联系人 void SearchContact(Contact* pc);//修改指定联系人 void ModifyContact(Contact* pc);//按名字排序 void SortContact(Contact* pc);//保存通讯录到文件中 void SaveContact(const Contact* pc);//加载文件到通讯录 void LoadContact(Contact* pc); contact.c文件 #define _CRT_SECURE_NO_WARNINGS #include contact.h//检查增容函数 void CheckCapacity(Contact* pc) {if (pc-count pc-capacity)//当人的信息达到容量上限时扩容每次2{//新空间大小为原先容量的个数新增的个数* 每个元素大小PeoInfo* ptr (PeoInfo*)realloc(pc-data, (pc-capacity INC_SZ) * sizeof(PeoInfo));if (ptr NULL){printf(AddContact::%s\n, strerror(errno));return;}else{pc-data ptr;pc-capacity INC_SZ;printf(增容成功\n);}} }void LoadContact(Contact* pc) {assert(pc);FILE* pfRead fopen(contact.txt, rb);if (NULL pfRead){perror(LoadContact);return;}PeoInfo tmp { 0 };//读取contact.txt文件中的信息暂存到结构体PeoInfo的对象tmp中。//判断通讯录目前空间是否足够有空间就将暂存在tmp中的信息存到data数组中。//如果空间不足要增容while (fread(tmp, sizeof(PeoInfo), 1, pfRead) 1)//读取成功返回1失败返回0{CheckCapacity(pc);pc-data[pc-count] tmp;//将结构体tmp放到data数组下标count的位置pc-count;}fclose(pfRead);pfRead NULL; }//文件版本 int InitContact(Contact* pc) {assert(pc);//下方要对结构体指针解引用所以需要断言pc-count 0;pc-data (PeoInfo*)calloc(DEFAULT_SZ, sizeof(PeoInfo));if (NULL pc-data){printf(InitContact::%s\n, strerror(errno));return 1;}pc-capacity DEFAULT_SZ;//当程序重新打开时需要加载文件的信息到通讯录LoadContact(pc);return 0; }void DestroyContact(Contact* pc) {assert(pc);free(pc-data);pc-data NULL; }//动态版本 void AddContact(Contact* pc) {assert(pc);//动态版本没有满的概念只判断什么时候增容CheckCapacity(pc);//添加时需要考虑新的信息存放位置而count恰好可以作为一个标识符。//比如count为0时说明通讯录没有信息此时可以添加在下标为0的位置printf(请输入名字:);scanf(%s, pc-data[pc-count].name);//name是数组名数组名就是首元素地址所以不需要取地址printf(请输入年龄:);scanf(%d, (pc-data[pc-count].age));printf(请输入性别:);scanf(%s, pc-data[pc-count].sex);printf(请输入电话:);scanf(%s, pc-data[pc-count].tele);printf(请输入地址:);scanf(%s, pc-data[pc-count].addr);//添加完信息后需要修改count的值pc-count;printf(增加成功\n); }void ShowContact(const Contact* pc) {printf(%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n, 姓名, 年龄, 性别, 电话, 地址);int i 0;for (i 0; i pc-count; i)//通讯录中的信息数量是count个{//打印data数组下标为i的信息printf(%-20s\t%-5d\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);} }static int FindByName(Contact* pc, char name[])//不暴露此函数所以不声明。此函数只是给下方删除函数使用且使用static修饰只能在此源文件下看到 {int i 0;for (i 0; i pc-count; i){if (0 strcmp(pc-data[i].name, name)){return i;}}return -1; }void DelContact(Contact* pc) {assert(pc);char name[MAX_NAME] { 0 };printf(请输入删除的姓名:);scanf(%s, name);if (pc-count 0){printf(通讯录为空无法删除\n);return;}//删除//1.查找int pos FindByName(pc, name);//去pc指向的data数组里查找名字if (pos -1){printf(要删除的人不存在\n);return;}//2.删除//删除就是从指定位置(即要删除的元素位置)开始要删除元素的后一个位置的信息往前移动覆盖直到后面所有信息都往前移动一个位置int i 0;//这里最后位置应该是最大下标-1因为如果遍历到最后一个下标那么下方i1就会越界//并且如果删除最后一个元素也不需要前移覆盖for (i pos; i pc-count - 1; i){pc-data[i] pc-data[i 1];}pc-count--;printf(删除成功\n); }void SearchContact(Contact* pc) {assert(pc);char name[MAX_NAME] { 0 };printf(请输入查找的姓名:);scanf(%s, name);//1.查找int pos FindByName(pc, name);//去pc指向的data数组里查找名字if (pos -1){printf(要查找的人不存在\n);return;}//2.打印printf(%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n, 姓名, 年龄, 性别, 电话, 地址);//打印data数组下标为pos的信息printf(%-20s\t%-5d\t%-5s\t%-12s\t%-30s\n, pc-data[pos].name,pc-data[pos].age,pc-data[pos].sex,pc-data[pos].tele,pc-data[pos].addr); }void ModifyContact(Contact* pc) {//1.查找assert(pc);char name[MAX_NAME] { 0 };printf(请输入修改的姓名:);scanf(%s, name);int pos FindByName(pc, name);//去pc指向的data数组里查找名字if (pos -1){printf(要修改的人不存在\n);return;}//2.修改printf(要修改人的信息已查找到接下来开始修改\n);printf(请输入名字:);scanf(%s, pc-data[pos].name);//name是数组名数组名就是首元素地址所以不需要取地址printf(请输入年龄:);scanf(%d, (pc-data[pos].age));printf(请输入性别:);scanf(%s, pc-data[pos].sex);printf(请输入电话:);scanf(%s, pc-data[pos].tele);printf(请输入地址:);scanf(%s, pc-data[pos].addr);printf(修改成功\n); }cmp_peo_by_name(const void* e1, const void* e2) {return strcmp(((PeoInfo*)e1)-name, ((PeoInfo*)e2)-name); }void SortContact(Contact* pc) {assert(pc);qsort(pc-data, pc-count, sizeof(PeoInfo), cmp_peo_by_name);printf(排序成功\n); }void SaveContact(const Contact* pc) {FILE* pfWrite fopen(contact.txt, wb);if (NULL pfWrite){perror(SaveContact);return;}//写文件-二进制形式int i 0;for (i 0; i pc-count; i)//利用循环每次写一个{fwrite(pc-data i, sizeof(PeoInfo), 1, pfWrite);}//关闭文件fclose(pfWrite);pfWrite NULL; } test.c文件 #define _CRT_SECURE_NO_WARNINGS #include contact.h//实现一个通讯录 //人的信息 //名字年龄性别电话地址 //1. 存放100个人的信息 //2. 增加联系人 //3. 删除指定联系人 //4. 查找联系人 //5. 修改联系人 //6. 排序 //7. 显示联系人//test.c 测试功能 //contact.c 通讯录相关的功能 //contact.h 通讯录相关的声明//文件版本 - 程序退出依然可以保存信息enum Option {EXIT,ADD,DEL,SEARCH,MODIFY,SHOW,SORT };//菜单 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); }int main() {int input 0;Contact con;//通讯录//初始化通讯录InitContact(con);//不分开初始化的原因尽量模块化工作函数初始化更方便do{menu();printf(请输入:);scanf(%d, input);switch (input){//case 1://这里的常量1 2 3 4不能直观看出来对应菜单的哪个功能所以可以使用枚举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:SortContact(con);break;case EXIT://退出之间把通讯录保存到文件中SaveContact(con);//空间都是通过realloc获得需要回收空间DestroyContact(con);printf(退出通讯录\n);break;default:printf(选择错误\n);break;}} while (input);return 0; }
http://www.hkea.cn/news/14398207/

相关文章:

  • 浙江城乡建设部网站首页什么网站程序好
  • 龙岩网站设计怎么注册一个自己的平台
  • 网站建设的团队分工网站流量 盈利
  • 陕西网站开发公司fullpage网站
  • 网站建设汽车后市场分析公司注册地址提供
  • 南宁手机网站设计策划网站搭建详细步骤
  • 网站建设利润ps网站首页直线教程
  • 企业网站建设硬件买源码做网站简单嘛
  • 怎么做潮牌网站wordpress实战教程pdf
  • 网站制作售后在线商城网站开发代码
  • 网站建设一般多少钱新闻设计素材网站合集
  • 做一个招聘信息的网站_用什么做网站的软件临时网站搭建
  • 好看的网站颜色搭配南京网站设计制作公司排名
  • 上传商品的网站株洲seo网站推广
  • 网站的程序怎么做的南京教育网站开发
  • 自己做网站需要花钱吗北京建站模板展示
  • 什么网站可以做兼职美工网站开发需要注意什么
  • 九江市建设工程质量监督站网站wordpress引导页
  • 建设网站怎么加购物车连云港做网站推广
  • 山东建设工程信息网站wordpress免费简约主题
  • 个人建站教程包头企业做网站
  • 福州市建设工程工料机信息网站黄页88网是什么性质的网站
  • 湖南省建设工程网站做推广怎么赚钱
  • 网站开发怎么入账软考证书有用吗张雪峰
  • 广州西樵网站制作wordpress需要会php吗
  • 团购网站开发语言微网建设管理系统
  • 南京外贸网站建设怎么收费网站建设 如何友情链接
  • 巴中市建设厅官方网站徐州鸿美网站建设
  • 关于我们 网站口腔门诊建设网站
  • 创同盟做网站好不好wordpress主题 演示数据库