字符串(strlen)
【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); // 因此这里必须再减1 10 }
(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 }
不断在进步.......