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

仪征建设银行官方网站老网站301跳转新网站

仪征建设银行官方网站,老网站301跳转新网站,网站开发与黑客,免费企业网站程序C语言程序设计笔记---026 C语言之模拟实现strncpy函数、strncat函数、strncmp函数、strstr函数1、介绍strncpy函数1.1、模拟实现strncpy函数 2、介绍strncat函数2.1、模拟实现strncat函数 3、介绍strncmp函数3.1、模拟实现strncmp函数 4、介绍strstr函数4.1、模拟实现strstr函数… C语言程序设计笔记---026 C语言之模拟实现strncpy函数、strncat函数、strncmp函数、strstr函数1、介绍strncpy函数1.1、模拟实现strncpy函数 2、介绍strncat函数2.1、模拟实现strncat函数 3、介绍strncmp函数3.1、模拟实现strncmp函数 4、介绍strstr函数4.1、模拟实现strstr函数 5、结语 C语言之模拟实现strncpy函数、strncat函数、strncmp函数、strstr函数 前言 通过C语言字符串函数的知识这篇将对strncpy、strncat、strncmp函数进行深入学习底层原理的知识并模拟实现对应功能。 /知识点汇总/ 长度不受限制的字符串函数strcat,strcmp,strcpy 介绍长度受限制字符串函数strncat,strncmp,strncpy 字符串查找函数strstr 1、介绍strncpy函数 函数原型char* strncpy(char* strDest, const char* strSource, size_t count); 函数功能完成源字符串到目标字符串的拷贝返回目标字符串的起始地址返回值类型为char*另外还可指定拷贝的长度 头文件string.h 使用注意事项 (1)、源字符串必须以’\0’结束因为会包括’\0’一起拷贝过去 (2)、拷贝会将源字符串中的’\0’拷贝到目标空间 (3)、目标空间必须足够大确保能存放源字符串 (4)、目标空间必须可变(不能是常量) (5)、初始化为数组形式时空间需要指明合适的大小 示例代码1如下 #include stdio.h #include string.h int main() {char arr1[20] { 0 };char arr2[] abcdefghi;strncpy(arr1, arr2, 3);printf(%s\n, arr1);//abcchar arr1[20] xxxxxxxxxxxxxxx;char arr2[] abcdefghi;strncpy(arr1, arr2, 3);printf(%s\n, arr1);//abcxxxxxxxxxxreturn 0; }示例代码2如下 探讨拷贝长度的因素当指定的拷贝长度比源字符串长度大时自动补\0 #include stdio.h #include string.hint main() {char arr1[20] xxxxxxxxxxxx;char arr2[] abc;strncpy(arr1, arr2, 6);//6长度比str2长时自动补的\0.printf(%s\n, arr1);//abc\0\0\0return 0; }1.1、模拟实现strncpy函数 #include stdio.h #include assert.h char* my_strncpy(char* str1, const char* str2, size_t num) {assert(str1 str2);char* ret str1;while (num--){*str1 *str2;}return ret; } int main() {char arr1[] abcdef;char arr2[] defabc;printf(请输入拷贝的字符串长度:);size_t len 0;scanf(%zd, len);printf(%s\n, my_strncpy(arr1, arr2,len));return 0; }解释说明 1.assert是断言参数为指针防止传参过来是空指针避免野指针的问题 2.用一个指针变量始终保存目标字符串的起始地址以免目标起始地址发生改变导致函数的返回值错误 3.num–执行的就是依次拷贝字符串的内容直到num 0,从而限制了拷贝个数最后跳出while循环 2、介绍strncat函数 函数原型char* strncat(char* strDest, const char* strSource, size_t count); 函数功能完成源字符串到目标字符串的追加返回目标字符串的起始地址返回值类型为char*另外还可指定追加的长度 头文件string.h 使用注意事项 (1)、源字符串必须以’\0’结束因为会包括’\0’一起追加过去 (2)、追加会将源字符串中的’\0’拷贝到目标空间 (3)、目标空间必须足够大确保能存放源字符串 (4)、目标空间必须可变(不能是常量) (5)、初始化为数组形式时空间需要指明合适的大小 示例代码1如下 #include stdio.h #include string.h int main() {char arr1[20] abc;char arr2[] defghi;strncat(arr1, arr2, 3);printf(%s\n, arr1);//abcdefreturn 0; }示例代码2如下 探究’\0’的追加情况1 #include stdio.h #include string.h int main() {char arr1[20] abc\0xxxxxxxxxxx;//字符串中本身具备\0时依然以\0开始覆盖最后补\0结束char arr2[] defghi;strncat(arr1, arr2, 3);printf(%s\n, arr1);//abcdef\0return 0; }示例代码3如下 探究’\0’的追加情况2 #include stdio.h #include string.h int main() {char arr1[20] abc\0xxxxxxxxxxx;//字符串中本身具备\0时依然以\0开始覆盖最后补\0结束char arr2[] defghi;strncat(arr1, arr2, 10);//10长度比str2长时自动在末尾补\0.此函数就不会对超出长度的字符进行操作了printf(%s\n, arr1);//abcdefreturn 0; }小结 ①、目标字符串中本身具备’\0’时依然以’\0’开始覆盖最后补’\0’结束 ②、指定长度长度比源字符串长时自动在末尾补’\0’且此函数就不会对超出长度的字符进行操作了 2.1、模拟实现strncat函数 #include stdio.h #include assert.h char* my_strncat(char* str1, const char* str2, size_t num) {assert(str1 str2);char* ret str1;while (*str1 ! \0){str1;}//*str1--;while (num--){*str1 *str2;}*str1 \0;return ret; } int main() {char arr1[10] abc;char arr2[10] abc;printf(请输入追加的字符串长度:);size_t len 0;scanf(%zd, len);printf(%s\n, my_strncat(arr1, arr2, len));return 0; }解释说明 1.assert是断言参数为指针防止传参过来是空指针避免野指针的问题 2.用一个指针变量始终保存目标字符串的起始地址以免目标起始地址发生改变导致函数的返回值错误 3.str1 ! \0’执行的就是指针遍历目标字符串的内容直到目标字符串的下一个地址,从而再以num–限制追加的字符长度 4.值得注意的是str1 ‘\0’最后需要置结束标志位否则就是乱码因为直到遇见’\0’才结束。 3、介绍strncmp函数 函数原型int strncmp( const char *string1, const char *string2, size_t count ); 函数功能字符串大小比较返回值类型为int另外还可指定比较的长度 头文件string.h 示例代码1如下 #include stdio.h #include string.h int main() {char arr1[] abcdef;char arr2[] abcqw;int ret strncmp(arr1, arr2, 3);printf(%d\n, ret);//0int ret2 strncmp(arr1, arr2, 4);printf(%d\n, ret2);//-1return 0; }3.1、模拟实现strncmp函数 #include stdio.h #include assert.h int my_strncmp(const char* str1,const char* str2, size_t num) {assert(str1 str2);while (num *str1 *str2){if (*str1 *str2){return 1;}if (*str1 *str2){return -1;}num--;str1;str2;}return 0; } int main() {char arr1[] abcdef;char arr2[] defabc;printf(请输入比较的字符串长度:);size_t len 0;scanf(%zd, len);printf(%d\n, my_strncmp(arr1, arr2,len));return 0; }解释说明 1.assert是断言参数为指针防止传参过来是空指针避免野指针的问题 2.用一个指针变量始终保存目标字符串的起始地址以免目标起始地址发生改变导致函数的返回值错误 3.num *str1 *str2执行的就是依次比较字符串的内容直到源字符串/目标字符串/指定字符长度 0结束,从而限制了比较字符个数最后跳出while循环 4、介绍strstr函数 函数原型const char *strstr( const char *string, const char *strCharSet ); 函数功能在字符串中找字符串字符串中找子字符串或子段 头文件string.h 返回值strstr会返回主字符串中子字符串第一次出现的位置如果主字符串中没有子字符串则返回NULL 示例代码1如下 #include stdio.h #include string.h int main() {char arr1[] abcdefghi;char arr2[] def;char* ret strstr(arr1, arr2);if (ret NULL){printf(找不到\n);}else{printf(%s\n, ret);//defghi}return 0; }4.1、模拟实现strstr函数 蛮力法直接遍历查找 #include stdio.h #include assert.h const char* my_strstr(const char* str1, const char* str2) {assert(str1 str2);const char* cp;//记录开始匹配的位置const char* s1;//遍历str1指向的字符串const char* s2;//遍历str2指向的字符串if (*str2 \0)return str1;cp str1;while (*cp){s1 cp;s2 str2;while (*s1 *s2 *s1 *s2){s1;s2;}if (*s2 \0)return cp;cp;}return NULL; } int main() {char arr1[] abcdefghi;char arr2[] def;const char* ret my_strstr(arr1, arr2);if (ret NULL){printf(找不到\n);}else{printf(%s\n, ret);//defghi}return 0; }解释说明 1.assert是断言参数为指针防止传参过来是空指针避免野指针的问题 2.定义三个指针变量cp用于标记返回的起始地址s1和s2用于遍历str1和str2逐个比较即可 3.*s1 *s2 *s1 *s2执行的就是依次比较字符串的内容直到子字符串与主字符串内容匹配则结束,最后跳出while循环返回cp的地址。 5、结语 掌握模拟函数的逻辑思维尽可能考虑全面学会利用画逻辑图分析并一步步的推理 学习函数的最实用的方式就是用自己的逻辑简单实现一些类似的功能 半亩方糖一鉴开天光云影共徘徊。 问渠哪得清如许?为有源头活水来。–朱熹观书有感
http://www.w-s-a.com/news/364946/

相关文章:

  • 做中医药网站有前景吗企业网站优化公司
  • 四川建设设计公司网站海南澄迈县
  • 邳州做网站梵克雅宝项链官网价格图片
  • dede网站收录滦平县建设局网站
  • 上海网站建设开发公注册公司要求什么条件
  • 安徽汽车网网站建设wordpress 知乎
  • 网站建设的功能都需要有哪些在线平台
  • 湖南岳阳网站开发网络公司石家庄做网站的公司哪个好
  • 西安市做网站的公司门户网站对应序号是什么
  • 太原网站域名开发什么是网页界面设计
  • 做产品类网站有哪些做一百度网站吗
  • 在线视频网站建设国外最新创意产品网站有哪些方面
  • 在一个网站下建设多个子网站宣传册画册设计公司
  • 潍坊网站建设公司排名网站建设预付
  • 手机和wap网站建设crm客户管理系统模板
  • 微商城网站建设市场唐山地方志网站建设
  • 想象力做网站网站301跳转代码
  • 做暧暧小视频有声音的网站太原网页搜索排名提升
  • 公众号链接的手机网站怎么做动易2006学校网站
  • 网站网上推广网站推他网站
  • 如何进行网站建设分析济宁做企业网站
  • 长沙网站seo技巧wordpress插件头像
  • appserv做网站教程微信信息流广告案例
  • 前端网站开发兼职长春火车站地下停车场收费标准
  • 苏州推广网站建设概况大连公交app
  • 移动互联网站开发与维护招聘网站建设计入什么费用
  • 郑州营销型网站建设erp系统有什么用
  • 公司网站开发费怎么入账投放广告网站
  • 企业网站开发文献综述加盟网网站建设策划书
  • 最便宜的网站空间网站建设和app开发