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

网站备案背景图酒店网站的规划与建设

网站备案背景图,酒店网站的规划与建设,注册城乡规划师哪个网校好,百变模板手机网站建设#x1f308;write in front :#x1f50d;个人主页 #xff1a; 啊森要自信的主页 ✏️真正相信奇迹的家伙#xff0c;本身和奇迹一样了不起啊#xff01; 欢迎大家关注#x1f50d;点赞#x1f44d;收藏⭐️留言#x1f4dd;希望看完我的文章对你有小小的帮助write in front :个人主页 啊森要自信的主页 ✏️真正相信奇迹的家伙本身和奇迹一样了不起啊 欢迎大家关注点赞收藏⭐️留言希望看完我的文章对你有小小的帮助如有错误可以指出让我们一起探讨学习交流一起加油鸭。 文章目录 前言 库函数strcpystrcpy的模拟实现 库函数strcatstrcat的模拟实现 strcmp 的使⽤strcmp 模拟实现 strstr 的使⽤strstr 的模拟实现 总结 前言 记上节我们学了字符串strlen的使用和三种模拟实现方法本小节阿森继续和你一起学习4个字符串函数strcpystrcatstrcmpstrstr的使用和他的模拟实现方法学习这些库函数可以更好的方便操作字符和字符串文章干货满满接下来我们就学习一下这些函数吧 库函数strcpy strcpy函数是将源字符串拷贝到目标字符串中覆盖目标字符串原有内容。 char *strcpy(char *dest, const char *src); dest:目标字符串用于保存拷贝结果。 src:源字符串将其内容拷贝到dest中。 返回值返回目标字符串dest的指针。注意点 strcpy函数会将src字符串中的字符一个一个地复制到dest字符串中直到遇到字符串结束标志\0为止。 src字符串必须以\0结束。 会将源字符串中的 \0 拷⻉到⽬标空间。 dest字符串要有足够的空间不然会导致缓冲区溢出。 目标空间必须是可修改的 代码 int main() {char arr1[20] xxxxxxxxx;char arr2[] {a, b, c,\0};strcpy(arr1, arr2);printf(%s\n, arr1);return 0; }运行结果 strcpy的模拟实现 方法一 void my_strcpy(char* dest, char* src) {while (*src ! \0){*dest *src;dest;src;}*dest *src; } int main() {char arr1[20] { 0 };char arr2[] abcdef;my_strcpy(arr1, arr2);printf(arr1 after copy: %s\n, arr1);return 0; }分析: 使用while循环循环条件是源字符串src指针指向的字符不为\0,每次循环体内将src指向字符复制到dest指向位置,分别使dest和src指针后移指向下一个字符位置,循环结束后将字符串结束符\0也复制到dest指向位置 方法二 第一种方法缺陷太多了,比如没有返回值无法知道拷贝是否成功。 char* my_strcpy(char* dest, const char* src) {assert(dest ! NULL);assert(src ! NULL);检查dest和src参数是否为NULL,NULL参数会导致访问异常。需要#include assert.hchar* ret dest;保存dest原始地址到ret变量后面返回值使用。assert(dest src);再次检查dest和src是否合法防御性编程。while (*dest *src){;}return ret; }while (*dest *src) 先一次赋值dest和src当前字符(*dest *src)然后并使指针后(destdest1,srcsrc1),while循环结束条件是当src字符串末尾\0字符被复制时结束,当src指向\0,此时\0赋值给*dest,符合while循环结束条件,跳出循环. 库函数strcat strcat函数用于将源字符串src追加到目标字符串dest的结尾。 char *strcat(char *dest, const char *src); dest - 目标字符串必须有足够的空间存储追加后的结果字符串。 src - 源字符串。 返回值 返回目标字符串dest的地址。strcat首先找到dest字符串的结尾即\0字符的位置。从dest字符串结尾开始将src字符串一个字符一个字符地复制过来。将src字符串的结束\0字符也复制到dest后面。最后返回dest地址。 关键点 源字符串src必须以 \0 结束。⽬标字符串中也得有 \0 否则没办法知道追加从哪⾥开始。dest必须有足够的空间存储追加后的结果字符串。⽬标空间必须可修改。字符串⾃⼰可不可以给⾃⼰追加? 使用: int main() {char str1[20] Hello ;char str2[20] World;char str3[40];/* 复制str1到str3 */strcpy(str3, str1);/* 将str2追加到str3结尾 */strcat(str3, str2);printf(str3 %s\n, str3);return 0; }输出: str3 Hello World strcat的模拟实现 strcat的模拟实现一 char* my_strcat(char* dest, const char* src) {char* ret dest;assert(dest src);检查参数是否合法。//1. 找到目标空间的\0使用while循环找到dest字符串的结束\0字符dest指针指向字符串结束后的位置。while (*dest){dest;}//2. 拷贝while (*dest *src){;}return ret; }while (*dest *src)先一次赋值dest和src当前字符(*dest *src)然后并使指针后(destdest1,srcsrc1),先读取src的一个字符将字符赋给dest指向的位置,然后dest和src同时后移一个位置循环,当src指向\0,此时\0赋值给*dest,循环结束. 2.字符串⾃⼰可不可以给⾃⼰追加? 答案是:不能给自己追加。 char* my_strcat(char* dest, const char* src) {char* ret dest;assert(dest src);//1. 找到目标空间的\0while (*dest){dest;}//2. 拷贝while (*dest *src){;}return ret; }int main() {char arr1[20] hello;my_strcat(arr1, arr1);printf(%s\n, arr1);return 0; }运行代码图: strcmp 的使⽤ strcmp用于比较两个字符串是否相等也就是比较字符串大小的函数。 函数原型 int strcmp(const char *str1, const char *str2); str1和str2是要比较的两个字符串指针。strcmp比较字符串的大小不是按字符串的长度进行比较而是逐个字符地比较两个字符串对应的每个字符的ASCII码值。比较使用的是无符号字符值的ASCII码顺序。 返回值 如果str1和str2完全相等返回0。 如果str1大于str2(按ASCII码顺序)返回一个大于0的数。 如果str1小于str2,返回一个小于0的数。 strcmp()函数是C标准库string.h头文件中的函数。 字符串比较结束条件是遇到字符串末尾\0字符或者第一个不匹配字符。 字符串cat 和 dog 的比较 c的ASCII码是99, d的ASCII码是100,所以cat小于dog字符串hello 和 hello world 的比较 前6个字符都相等但第7个字符 的ASCII码小于\0,所以hello小于hello world例子 #include string.hint main() {char str1[] ahbyb;char str2[] asyzx; int result strcmp(str1, str2);if(result 0)printf(Strings are equal\n);else if(result 0) printf(str1 is greater than str2\n); elseprintf(str1 is less than str2\n);return 0; }结果 str1 is less than str2strcmp 模拟实现 int my_strcmp(const char* s1, const char* s2) {while (*s1 *s2){if (*s1 \0)return 0;s1;s2;}return *s1 - *s2;//if (*s1 *s2)// return 1;//else// return -1;}使用while循环逐个比较s1和s2每个字符是否相等如果字符相等继续循环比较下一个字符, 如果遇到字符串结束符’\0’,表示两个字符串完全匹配直接返回0如果在循环中找到不匹配的字符使用*s1 - *s2返回两个字符的ASCII码差值 strstr 的使⽤ strstr用来查找一个字符串在另一个字符串中首次出现的位置。 strstr函数的原型 char* strstr(const char* str1, const char* str2); - str1: 主字符串要在其中查找子字符串 - str2: 子字符串要查找的字符串strstr函数可以用来在一个字符串中查找另一个字符串首次出现的位置如果str2不存在于str1中则返回NULL;如果str2存在于str1中则返回第一个匹配位置的指针。 strstr的比较原理是 从str1字符串的起始位置开始与str2字符串进行字符匹配比较。 如果匹配失败(当前字符不同)则str1指针后移一位继续匹配。 如果匹配成功(到达str2字符串结束符\0),则匹配成功返回str1指针地址。 如果遍历完str1仍未匹配成功则返回NULL。 例如 char* p strstr(hello world,world); // p指向world子字符串在hello world中的位置这里用一个图来解释strstr函数的工作原理 ---------------------- str1 | h e l l o w o r l d| ----------------------|V----------- str2 | w o r l d |-----------|V比较第一个字符h与w,不匹配|V指针后移到下一个字符e|V比较e与w,不匹配|V指针后移到下一个字符l| V比较l与w,不匹配|V指针后移依次比较直到匹配成功|V当str1指针指向w时与str2第一个字符w匹配|V开始匹配后续字符全部匹配成功|V返回str1指针地址指向子字符串在主字符串中的位置int main() {char arr1[] abcegtbaab;char arr2[] cegtba;char* ret strstr(arr1, arr2);if (ret ! NULL)printf(%s\n, ret);elseprintf(找不到\n);return 0; }结果 cegtbaab当然也可以用图展示 strstr从str1起始位置开始用str2与str1进行字符匹配比较。如果不匹配就后移str1指针匹配成功就返回str1当前位置指针,上图就是返回c的地址。通过这种逐个匹配的方式找到子字符串在主字符串中的第一个匹配位置。 strstr 的模拟实现 char* my_strstr(const char* str1, const char* str2) {const char* cur str1;//用cur记录str1的位置const char* s1 NULL;//使用assert检查str1和str2是否为非空指针。const char* s2 NULL;assert(str1 str2);if (*str2 \0)//检查str2是否为空字符串如果为空直接返回str1。{return (char*)str1;}while (*cur)//使用cur指针遍历str1。{ //每次遍历s1 cur;//将cur赋值给s1,将str2赋值给s2,用于后续匹配s2 str2;//当然第几次失败后重新回溯重新开始匹配while (*s1 *s2 *s1 *s2){s1;//开始匹配s1和s2中的字符同时递增s1和s2。s2;}if (*s2 \0)如果s1和s2匹配到结尾(\0),表示找到了子串返回cur。{return (char*)cur;}cur;匹配失败后cur继续下次匹配。}return NULL;遍历完str1没有找到匹配返回NULL。 }时间复杂度为O(MN),其中M和N分别为主串和子串的长度。 若老铁们有点蒙蒙的可以结合下图来理解 总结 这次阿森和你一起学习4个C语言中常用的基本字符操作函数当然这只是一部分还有很多但阿森会慢慢和你一起学习。感谢你的收看如果文章有错误可以指出我不胜感激让我们一起学习交流如果文章可以给你一个小小帮助可以给博主点一个小小的赞
http://www.sadfv.cn/news/144595/

相关文章:

  • 美工网站做兼职福建省头条新闻
  • 叫人建设网站要注意什么问题淘宝数据网站开发
  • 开一家网络公司做网站前景如何商标注册要求
  • 做网站自己上传电影要多大服务器百度怎样建立一个网站
  • 上海网站建设排名公司北京制作网站多少钱
  • 网站导航背景 蓝色wordpress+屏蔽ip插件
  • 企业电子商务网站建设规划方案大气集团网站
  • 有哪些做封面的网站网站开发对比特点
  • 网站设置了权限个人网站如何制作教程
  • 友情链接添加在网站中有什么用农林牧渔行业网站建设
  • 实训课建设网站步骤网页升级维护
  • 做网站费乐平市网站建设
  • 如何给网站做高质量外链中国旺旺(00151) 股吧
  • 矿区网站建设纹绣培训班一般价格多少
  • 域名备案网站服务内容建设网站哪个比较好
  • 临沂网站建设报价设计的很好的网站
  • ps做网站页面步骤专业网站建设分类标准
  • 折扣网站怎么做设计制作图片
  • 做网站前提需要什么有个新网站能提供
  • 东莞培训网站建设建站平台外贸
  • 凡科建站是不是关闭企业网站wordpress装修模板
  • 网站icp备案号查询八百客crm系统登录入口
  • 漳州平台网站建设西部数码WordPress开启伪静态
  • 怎么看网站哪个公司做的国家高新技术企业有什么好处
  • 哪个网站收录排名好网站建设海报图片
  • 网站搭建谷歌seo铜陵建设行业培训学校网站
  • 云南网站开发网络公司前10合肥网站设计品牌
  • 网站开发的职业分析工作室建设基础
  • 网站在百度无法验证码怎么办网站建设教学视频教程
  • 黄陂网站建设wordpress 页面模板 怎么用