• 字符串(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
    声明:本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此声明,且在文章明显位置给出本文链接,否则保留追究法律责任的权利。
    签名:顺序 选择 循环
  • 相关阅读:
    WCF 入门例子
    C#傻瓜日志类
    ajax长链接拉实现
    linux命令备忘
    .Net 并发异步处理总结
    grafana初始化密码(转载)
    Android 调用照相机拍照
    自定义android控件EditText 自定义边框 背景
    JSON 请求的实现过程
    [转]Android开发教程:shape和selector的结合使用
  • 原文地址:https://www.cnblogs.com/Braveliu/p/2840811.html
Copyright © 2020-2023  润新知