【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 }

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

转载于:https://www.cnblogs.com/Braveliu/archive/2012/12/31/2840811.html

字符串(strlen)相关推荐

  1. 利用标准库sprintf、sscanf函数实现字符串和数字的转换

    一.sprintf() 用于将数字转化为字符串 1.将整数转化为字符串 #include<iostream> using namespace std;int main() {char st ...

  2. 字符串(一):char 数组

    字符串使用方法整理 系列: 字符串(一):char 数组 字符串(二):string 1. 声明 如下是一个例子(=> 表示表达式等价): char a[20] = "abcd&quo ...

  3. c语言1066字符分类统计,C语言字符串操作总结大全(超详细)

    1)字符串操作strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字 ...

  4. c语言怎么独缺非空格字符,C语言-字符串(单个字符)

    一.字符串(单个字符)的定义 1.单个字符的定义 char i = 'x' (单个字符的定义) 字符串创建后为常量无法修改 2.一维字符串数组的定义 char i []="xxxx" ...

  5. C++中数字与字符串之间的转换 scanf string总结(复习必读)

    1 string的scanf读入操作 C++里面控制台输入直接使用cin操作就可以了:或者getline(istringstream,string); 字符和数字加减就是字符的ASCII码和数字直接加 ...

  6. 数组及字符串相关知识

    一.数组的知识 Sec1.一维数组 1.数组的引入: 当数据量很多,类型相同需要重复定义的时候,需要用数组简化问题解法. 2.数组的使用 ①定义: 数组类型 数组名 [ 常亮表达式 ] 例如:int ...

  7. C 和 C++字符串详解

    From:http://blog.csdn.net/fenxinzi557/article/details/51457829 From:http://www.cnblogs.com/xFreedom/ ...

  8. 《C和指针》——C语言字符串操作

    字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符 ...

  9. java字符串反转及替换_字符串的替换(str_replace)

    php字符串与字符替换函数 在php教程替换字符效率最高也是最简单字符替换函数str_replace($arr1,$arr2,$str) 实例一 str_replace("iwind&quo ...

  10. C语言字符串操作总结大全(超详细)

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...

最新文章

  1. 107. Binary Tree Level Order Traversal II
  2. leetcode算法题--数值的整数次方
  3. Java 计算学生的平均成绩
  4. Spring Mvc + Easyui中根据查询结果导出文件
  5. 09-LearnTheArchitecture-MemoryManagement
  6. 2019年, video captioning论文汇总
  7. AjaxJson笔记(1)
  8. 试论软件工程学科的交叉性_海外大学所有学科梳理(超大工程,建议收藏)-大学下的硕士一二级学科...
  9. redhat配置centos的yum源
  10. Spring应用架构
  11. linux中如何复制文件并重命名_linux 下怎么复制一个文件到另外一个目录并且重命名...
  12. 不要假装努力,结果不会陪你演戏!
  13. python基础for循环和while循环(十)
  14. hdu1284钱币兑换问题
  15. Xftp5如何设置默认的文件夹
  16. 禁用,元素设置为不可点击
  17. 再复杂的报表,用这3种方式,都能解决!
  18. ASP.NET与MVC架构区别总结
  19. Table变量和临时表区别
  20. 电子科技大学计算机学生水平,近三年的学生评价结果-电子科技大学.DOC

热门文章

  1. jquery富文本编译器_jQuery 移动端artEditor富文本编辑器
  2. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_16-页面静态化-模板管理-模板制作...
  3. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_02 递归_4_练习_递归打印多级目录...
  4. python 弧度与角度互转
  5. jQueru中数据交换格式XML和JSON对比
  6. javascript对象概念大全
  7. [面试备忘]数组(一维)最大子串总结
  8. 学校管理 学生会管理系统(SSM)vue+ssm+shiro
  9. java提取(获取)博客信息(内容)
  10. 雷林鹏分享:jQuery EasyUI 菜单与按钮 - 创建链接按钮