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

广东海外建设监理有限公司官方网站做的网站老被攻击

广东海外建设监理有限公司官方网站,做的网站老被攻击,电子信息工程能考国家电网吗,门户网站的三大基本特征开饭了#xff0c;之前写的通讯录#xff0c;是否会有人觉得申请1000人的空间是不是有点用不上呀#xff0c;怎么才能做到要多少申请多少个呢#xff1f;#xff1f;我们学完动态内存管理#xff0c;和文件的相关操作#xff0c;终于可以继续完善我们的通讯录了 船新版本… 开饭了之前写的通讯录是否会有人觉得申请1000人的空间是不是有点用不上呀怎么才能做到要多少申请多少个呢我们学完动态内存管理和文件的相关操作终于可以继续完善我们的通讯录了 船新版本 为了适应各个用户的体验8.18日系统升级请各位用户查看最新的安装包做出以下修改 1.为了不占用更多的空间通讯录容量满时进行扩容操作。 2.通讯录初始化会加载文件中的通讯录成员信息防止出现程序结束后通讯录销毁问题。 3.增加背景音乐功能用户在使用该通讯录时有更好的用户体验别人有的 咱们必须有 4.增加销毁通讯录功能。 5.增加将通讯录保存到文件功能。 静态版链接 通讯录静态版 通讯录结构体的修改 typedef struct pp {struct peoinfo *arr;int sz;int size;}pp;size:通讯录容量大小区别于sz(当前存了多少个人) 将struct peoinfo arr[1000]修改为struct peoinfo *arr 对arr指针指向的地方进行动态内存分配将分配好的地址放到arr中去 扩容函数 void Addbig(pp* p) {if (p-sz p-size){peoinfo* tmp (peoinfo*)realloc(p-arr, (p-size 2) * sizeof(peoinfo));if (tmp ! NULL){p-arr tmp;}p-size 2;printf(增容 2\n);} }当通讯录实际容纳的用户大小通讯录的当前容量时开始扩容使用realloc函数参数1要扩容空间的起始地址参数2扩容后总空间字节大小将开辟的空间首地址放到tmp指针变量中去如果扩容成功将扩容好的首地址放到p-arr指针里面去p-size 2每次增加两个容量大小 文件加载到通讯录函数 void Loadcontact(pp* p) {FILE* fpfopen(contact.txt, rb);if (fp NULL){perror(Loadcontact:);return;}peoinfo tmp { 0 };while (fread(tmp,sizeof(peoinfo),1,fp)){Addbig(p);p-arr[p-sz] tmp;p-sz;}fclose(fp);fp NULL; }用二进制读的方式打开文件如果未打开返回空指针给fp,然后打印出错误定义一个人信息的结构体变量使用fread函数参数1目标地址参数2一次读多少个字节这里读一个人信息结构体的字节参数3每次读几个这样结构体参数4从那里读文件指针返回值是每次读多少个人信息结构体如果小于参数30.则读完了读不到一个完整人的结构体.每次从文件中读取数据调用扩容函数防止读取数据大于总容量扩容函数会增加总容量大小每次将一个人的信息读到结构体tmp中将tmp里面的一个人信息赋值给p-arr[p-sz];然后当前存储的数目sz; 然后关闭文件将文件指针置空 初始化通讯录函数 void Initcontanct(pp* p) {/*p-sz 0;memset(p-arr, 0, sizeof(p-arr));*/p-sz 0;p-size SIZE;p-arr (peoinfo*)malloc(p-size * sizeof(peoinfo));if (p-arr NULL){perror( Initcontanct:malloc);return;}memset(p-arr, 0, p-size * sizeof(peoinfo));Loadcontact(p);}初始化通讯录没有存入信息p-sz0;开始通讯录的容量可以存三个人p-size SIZE;前面定义 SIZE 为3动态开辟三个人信息结构体大小的空间将开辟空间的首地址传给指针变量p-arr;如果传的为空指针则打印错误memset,内存操作函数将创建三个容量大小的数据置为0调用Loadcontact§;加载文件中的数据 保存进文件函数 void Savecontact(pp* p) {FILE* fp fopen(contact.txt, wb);if (fp NULL){perror(Savecontact:);return;}int i 0;for (i 0; i p-sz; i){fwrite(p-arri, sizeof(peoinfo), 1, fp);}fclose(fp);fp NULL;printf(保存成功\n); }以二进制写的方式打开文件打开失败返回空指针打印错误使用fwrite函数参数要写入文件的数据起始地址参数2每次写入的字节大小参数3每次写1个人信息结构体大小参数3写入文件的地址文件指针循环向文件中写入通讯录每个用户信息循环次数为p-sz,当前通讯录用户人数 通讯录销毁函数 void DestroyContanct(pp* p) {free(p-arr);p-arr NULL;p-size 0;p-sz 0;printf(销毁成功\n); }free释放动态申请的内存参数动态申请空间的地址指针置空 容量清0当前用户人数清0 背景音乐函数 头文件 #includewindows.h #includemmsystem.h//包含多媒体设备接口头文件 #pragma comment(lib,winmm.lib)//加载静态库函数实现 void bgm() { //打开音乐mciSendString(open ./music.MP3, 0, 0, 0);//后面参数不用管写0即可//播放音乐mciSendString(play ./music.MP3, 0, 0, 0);//后面参数不用管 }注意上面路径是相对./文件名.文件类型./是在当前目录下也可以使用绝对路径不能出现空格文件类型最好用大写使用qq音乐下载好音乐点击主菜单音频转码转成MP3格式 使用其他的音乐软件播放不出来qq音乐打钱 将音频文件放到当前目录下在vs中找到解决方案右击鼠标找到在文件资源管理器中打开文件夹放到图示位置即可 使用绝对路径复制上面的复制路径D:\C-code\1\elementary-stage-of-c-language\通讯录动态加文件\通讯录动态加文件\music.mp3将反斜杠改成双反‘或者/也行。 如果出现以下错误 调试找到调试属性 高级-字符集 使用多字节字符集就ok了 #源码展示 contanct.h #pragma once #define _CRT_SECURE_NO_WARNINGS #includewindows.h#includemmsystem.h//包含多媒体设备接口头文件 #includestdio.h #include string.h #include stdlib.h #pragma comment(lib,winmm.lib)//加载静态库 #define MAX_NAME 20 #define MAX_SEX 6 #define MAX_TEL 12 #define MAX_ADDR 20 #define SIZE 3 enum opion {EXIT,ADD,DEL,SEARCH,MODIFY,SORT,PRINT,SAVE,MUSIC,DESTROY }; typedef struct peoinfo {char name[MAX_NAME];char sex[MAX_SEX];int age;char tel[MAX_TEL];char addr[MAX_ADDR];}peoinfo;typedef struct pp {struct peoinfo *arr;int sz;int size;}pp; void Initcontanct(pp* p); void Addcontanct(pp* p); void Printcontanct(pp* p); void Delcontanct(pp* p); void findcontanct(pp* p); void modifycontanct(pp* p); void Sortcontanct(pp* p); void Addbig(pp* p); void Loadcontact(pp* p); void Savecontact(pp* p); void bgm(); void DestroyContanct(pp* p);contanct.c #includecontanct.h //#includewindows.h #includegraphics.h//包含图形库头文件 //#includemmsystem.h//包含多媒体设备接口头文件 //#pragma comment(lib,winmm.lib)//加载静态库 void DestroyContanct(pp* p) {free(p-arr);p-arr NULL;p-size 0;p-sz 0;printf(销毁成功\n); } void Addbig(pp* p) {if (p-sz p-size){peoinfo* tmp (peoinfo*)realloc(p-arr, (p-size 2) * sizeof(peoinfo));if (tmp ! NULL){p-arr tmp;}p-size 2;printf(增容 2\n);} } void Loadcontact(pp* p) {FILE* fpfopen(contact.txt, r);if (fp NULL){perror(Loadcontact:);return;}peoinfo tmp { 0 };while (fread(tmp,sizeof(peoinfo),1,fp)){Addbig(p);p-arr[p-sz] tmp;p-sz;}fclose(fp);fp NULL; } void Savecontact(pp* p) {FILE* fp fopen(contact.txt, wb);if (fp NULL){perror(Savecontact:);return;}int i 0;for (i 0; i p-sz; i){fwrite(p-arri, sizeof(peoinfo), 1, fp);}fclose(fp);fp NULL;printf(保存成功\n); } void Initcontanct(pp* p) {/*p-sz 0;memset(p-arr, 0, sizeof(p-arr));*/p-sz 0;p-size SIZE;p-arr (peoinfo*)malloc(p-size * sizeof(peoinfo));if (p-arr NULL){perror( Initcontanct:malloc);return;}memset(p-arr, 0, p-size * sizeof(peoinfo));Loadcontact(p);}void Addcontanct(pp* p) {Addbig(p);printf(请输入姓名\n);scanf(%s, p-arr[p-sz].name);printf(请输入性别\n);scanf(%s, p-arr[p-sz].sex);printf(请输入年龄\n);scanf(%d, (p-arr[p-sz].age));printf(请输入电话\n);scanf(%s, p-arr[p-sz].tel);printf(请输入地址\n);scanf(%s, p-arr[p-sz].addr);p-sz;printf(录入成功\n);} void Printcontanct(pp* p) {int i 0;printf(******************************************************\n);printf(%-10s %-5s %-5s %-12s %-20s\n, 姓名, 性别, 年龄, 电话, 地址);printf(******************************************************\n);for (i 0; i p-sz; i){printf(%-10s %-5s %-5d %-12s %-20s\n, p-arr[i].name, p-arr[i].sex, p-arr[i].age, p-arr[i].tel, p-arr[i].addr);printf(******************************************************\n);} } int find(pp* p, char name[]) {int i 0;for (int i 0; i p-sz; i){if (!strcmp(p-arr[i].name, name))return i;}return -1; } void Delcontanct(pp* p) {char name[MAX_NAME];printf(请输入要删除朋友的名字\n);scanf(%s, name);if (find(p, name) -1){printf(查无此人\n);}else{int k find(p, name);for (int j k; j p-sz - 1; j){p-arr[j] p-arr[j 1];}p-sz--;printf(删除成功\n);} } void findcontanct(pp* p) {char name[MAX_NAME];if (p-sz 0){printf(通讯录为空\n);return;}printf(请输入要查找朋友的名字\n);scanf(%s, name);if (find(p, name) -1){printf(查无此人\n);}else{int k find(p, name);printf(******************************************************\n);printf(%-10s %-5s %-5s %-12s %-20s\n, 姓名, 性别, 年龄, 电话, 地址);printf(%-10s %-5s %-5d %-12s %-20s\n, p-arr[k].name, p-arr[k].sex, p-arr[k].age, p-arr[k].tel, p-arr[k].addr);printf(******************************************************\n);} } void modifycontanct(pp* p) {char name[MAX_NAME];printf(请输入修改朋友的名字\n);scanf(%s, name);if (find(p, name) -1){printf(查无此人\n);}else{int k find(p, name);printf(请输入要修改朋友的信息\n);printf(修改性别-);scanf(%s, p-arr[k].sex);printf(修改年龄-);scanf(%d, (p-arr[k].age));printf(修改电话-);scanf(%s, p-arr[k].tel);printf(修改地址-);scanf(%s, p-arr[k].addr);printf(修改成功\n);} } int int_cmp_age(const void* p1, const void* p2)//按年龄比较 {return ((struct peoinfo*)p1)-age - ((struct peoinfo*)p2)-age; } void Sortcontanct(pp* p) {qsort(p-arr, p-sz, sizeof(peoinfo), int_cmp_age);printf(按年龄排序成功快去打印吧\n); } void bgm() { //打开音乐mciSendString(open ./music.MP3, 0, 0, 0);//后面参数不用管//播放音乐mciSendString(play ./music.MP3, 0, 0, 0);//后面参数不用管 }test.c #includecontanct.h void menu() {printf(#######################################\n);printf(#********* 1.add ***************#\n);printf(#********* 2.del ***************#\n);printf(#********* 3.search ***************#\n);printf(#********* 4.modify ***************#\n);printf(#********* 5.sort ***************#\n);printf(#********* 6.print ***************#\n);printf(#********* 7.save ***************#\n);printf(#********* 8.music ***************#\n);printf(#********* 9.Destroy***************#\n);printf(########## 0.exit ################\n);} void test() {pp pro;Initcontanct(pro);int input;do {menu();scanf_s(%d, input);switch (input){case ADD:Addcontanct(pro);break;case DEL:Delcontanct(pro);break;case SEARCH:findcontanct(pro);break;case MODIFY:modifycontanct(pro);break;case SORT:Sortcontanct(pro);break;case PRINT:Printcontanct(pro);break;case SAVE:Savecontact(pro);break;case MUSIC:bgm();break;case DESTROY:DestroyContanct(pro);break;case EXIT:printf(退出通讯录\n);break;default:printf(输入错误请重新输入\n);break;}} while (input); }void main() {test();}总结 使用动态内存管理以及文件操作优化了静态通讯录不足加上了背景音乐如果对你有帮助的话请一键三连谢谢大家了
http://www.w-s-a.com/news/700389/

相关文章:

  • 怎么做律所的官方网站红塔网站制作
  • 装一网装修平台官网惠州seo按天付费
  • 湖南建设监理报名网站东莞模块网站建设方案
  • 网站建设小组个人主页html源码
  • 响应式网站检测工具营销公司业务范围
  • 网站源码如何安装做游戏课程网站
  • 选服务好的网站建设亚洲砖码砖专区2022
  • 网站快速查找wordpress 悬停 图片 文字
  • 网站续费 多久想自己做网站该学些什么
  • 可以自己做网站wordpress英文写作插件
  • 国外可以做会员网站的网站怎么查百度竞价关键词价格
  • 新站网站建设亚马逊关键词
  • 电商网站前端架构设计上海市建设工程安全生产协会网站
  • 东莞企业免费模版网站建设一般网站维护要多久
  • 著名建筑设计网站常州制作网站价格
  • 食品营销型网站广东省广州市白云区
  • 如何做网站哪个站推广描述对于营销型网站建设很重要飘红效果更佳
  • 济阳做网站公司99企业邮箱888
  • 国贸做网站的公司能接做网站的活的网站
  • 淮南建设厅网站上杭县建设局网站
  • 东莞做网站公司首选!西安注册公司费用
  • 做网站包括什么卖水果网站模板
  • 扬州网站建设外包wordpress 文章评分
  • 网站建设网站多少钱公司名字大全列表
  • 设计企业网站内容wordpress 投稿者 权限
  • seo网站推广免费价格低的成语
  • 做网站建设销售辛苦吗专题页是什么
  • 做网站的软件名字全拼wordpress可以上传文件吗
  • 建品牌网站公司关于asp_sql网站开发的书籍
  • 建网站公司营销型网站建设wordpress自定义登录页