zoukankan      html  css  js  c++  java
  • 字符串(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 }

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

     

    作者:kaizen
    声明:本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此声明,且在文章明显位置给出本文链接,否则保留追究法律责任的权利。
    签名:顺序 选择 循环
  • 相关阅读:
    1017.陶陶装苹果
    1084.爬楼梯加强版
    1056.A ^ B Problem 快速幂算法。
    1074.我们喜欢递归的斐波那契数列
    1073.我们喜欢递归的阶乘
    1046 没过
    python 基本常用数据类型
    yii2.0 数据库查询操作
    python 随便笔记
    搭建自己的koa+mysql后台模板
  • 原文地址:https://www.cnblogs.com/Braveliu/p/2840811.html
Copyright © 2011-2022 走看看