博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串(strlen)
阅读量:6984 次
发布时间:2019-06-27

本文共 1194 字,大约阅读时间需要 3 分钟。

【1】求字符串长度函数如何实现?

(1)第一种实现思想:遍历并计数

方法简述:循环遍历每个元素,直至遇到"\0",计数统计。也是最常用的方法,属于惯性思维。

示例代码如下:

1 /* 2  * for循环 3  */ 4 int strlen1(const char *str) 5 { 6     int Length = 0; 7     if (NULL != str) 8     { 9         for ( ;*str++ != '\0';Length += 1);10         return Length;11     }12     return Length;13 }14 15 /*16  * while循环17  */18 int strlen2(const char *str)19 {20     int len = 0;21     if (NULL != str)22     {23         while (*str++ != '\0')24         {25             len++;26         }27         return len;28     }29     return len;30 }

(2)第二种实现思想:指针作差运算  

方法简述:用最后“\0”的下一个字符指针值减去第一个指针值,再减去“\0”的一个空间

示例代码如下:

1 int strlen3(const char *src) 2 { 3     if (NULL == src) 4     { 5         return 0; 6     } 7     const char *temp = src; 8     while (*src++ != '\0');    // 本循环结束时,src已经指向了“\0”的下一个字符 9     return (src - temp - 1);   // 因此这里必须再减110 }

(3)第三种实现思想:递归实现  

方法简述:如果遇不到结束符“\0”,我们就义无反顾的追下去......

示例代码如下:

1 int strlen4(const char *str) 2 { 3     if ('\0' == *str) 4         return  0;    5     else  6         return  1 + strlen4(str +1);                   //标准递归 7 } 8  9 int strlen5(const char *str)10 {11     return *str =='\0' ? 0 : 1 + strlen5(str + 1);     //三目运算符实现方式12 }

不断在进步.......

 

转载地址:http://kpvpl.baihongyu.com/

你可能感兴趣的文章
第一次搭建阿里云服务器
查看>>
java 文件存储
查看>>
Android build.gradle 获取Git 仓库数据
查看>>
十分钟熟练Dockerfile指令
查看>>
ES6新特征总结与介绍——声明与表达式
查看>>
python3实现抓取网页资源的 N 种方法(内附200GPython学习资料)
查看>>
自定义网络请求框架
查看>>
Unity(射线)
查看>>
阿里云媒体转码MTS使用教程
查看>>
shell常见的文件属性检查
查看>>
年度最期待游戏废土2登陆Linux
查看>>
CA knowledge study
查看>>
linux目录结构简析
查看>>
VMware ESXi部署OVF模板
查看>>
2上的svn部署
查看>>
《***测试实践指南》D03
查看>>
Site Definition和Web Template的区别
查看>>
细说linux挂载
查看>>
阿里资深系统架构师九峰谈云计算
查看>>
Android的多任务之路
查看>>