目录

  • 求字符串长度的一般原理
  • 方法一:strlen函数
    • 函数原型
    • 使用方法
  • 方法二:指针+整数
  • 方法三:指针-指针
  • 总结:

求字符串长度的一般原理

求字符串长度简单来说就是计算一个字符串(字符数组)中元素的个数即从数组头部计数,直到遇到字符串’\0’结束符为止,计数结果不包括’\0’.

方法一:strlen函数

函数原型

size_t strlen( const char *string );

使用方法

C语言中的库函数strlen,它包含于string.h中,因此我们需要在使用前添加头文件 ,具体用法如下:

#include <stdio.h>
#include <string.h>
int main()
{char str[] = "abcdef";printf("%d", strlen(str));return 0;
}

strlen从数组头部计数,直到遇到字符串’\0’结束符为止,结果不包括’\0’

方法二:指针+整数

#include <stdio.h>int my_strlen(char* str)
{int count = 0;while (*str != '\0'){count++;str++;}return count;
}
int main()
{char arr[] = "abcdef";int len = my_strlen(arr);printf("%d", len);return 0;
}


思路:求字符串长度即统计’\0’之前的元素个数,函数中传过去的*str是arr数组中的第一个元素,但是它是’a’,不等于’\0’,因此count++,str+1在找第二个元素

因此用while循环,以此类推,直到找到’\0’停止计数,并将count值打印出来返回给len打印出来,计算字符串长度完成

方法三:指针-指针


#include <stdio.h>
int my_strlen(char* str)
{char* start = str;while (*str != '\0'){str++;}return str - start;
}int main()
{char arr[] = "abcde";int len = my_strlen(arr);printf("%d", len);return 0;
}

科普:指针减指针得到的是两个地址之间的元素个数

根据这个知识点,我们不难发现,我们只需要知道字符’a’的地址和’\0’的地址,相减便可得到字符串的长度
因此我们在函数中,用start记录起始元素的地址,用while循环使元素逐渐后移,直到遇见’\0’,此时的str便是’\0‘的地址
因此二者相减便是字符串的长度!

总结:

计算字符串的根本就是找到’\0’的位置,计算第一个元素到’\0’位置即可

计算字符串长度的三种方法(库函数 指针 )【详解】相关推荐

  1. Shell脚本中计算字符串长度的5种方法

    这篇文章主要介绍了Shell脚本中计算字符串长度的5种方法,来自于个人Shell脚本长期的开发经验,需要的朋友可以参考下 有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前S ...

  2. 计算字符串长度的五种方法

    方法一: ------------------------------------------------------------ 方法二; ----------------------------- ...

  3. 求字符串长度的三种方法(C语言)

    如何求字符串的长度? 首先要明白字符串存储的原理. 字符串存储时,是以'\0'结尾,这个就可以作为判断字符串结尾的一个条件. 接下来,只要有字符串的首元素地址,就可以解决求字符串长度的问题啦! 第一种 ...

  4. C++ 获取string字符串长度的三种方法

    1.用string的成员方法length()获取字符串长度 length()比较直观,表示的就是该字符串的长度. #include <string> #include <iostre ...

  5. c语言求字符串长度的三种方法(部分略微优化)

    求字符串的长度,很多人都会直接想到用strlen函数,只需要头文件string.h就可以很轻松的实现,但对于我们c语言的初学者,也应该尝试用其他方法来进行实现,除了strlen函数外有三种方法可供参考 ...

  6. 【c语言】模拟strlen函数求字符串长度的三种方法

    1.借助中间变量(常规方法) #include<stdio.h> int my_strlen(char* str)//接收了数组首元素的地址 {int count = 0;while (* ...

  7. 让行内元素转化为块元素的三种方法与特点详解

    1.添加display:block属性,不脱标,独占一行,默认高度与内容同高. 2.添加浮动,脱标则自动转化块元素,宽默认由内容撑开. 3.添加固定定位或者绝对定位,依然脱离标准流,转化为块元素,宽默 ...

  8. (转)Shell中获取字符串长度的七种方法

    Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...

  9. 实现java字符串反转的三种方法

    实现java字符串反转的三种方法 1.问题描述:将字符串String="abcdefg"实现反转变成 "gfedcba":用java语言实现. 2.解决方法: ...

最新文章

  1. OpenAI发布CLIP模型快一年了,盘点那些CLIP相关让人印象深刻的工作
  2. 笑谈Android图表-MPAndroidChart
  3. JPA零碎要点---JTA全局事物理解
  4. win10mysql卸载与重装_win10下完全卸载+重装MySQL步骤详解
  5. 语文好的人是怎么做到的?
  6. 为什么选用自增量作为主键索引
  7. 2432功率计使用说明_Quarq功率计的安装、使用和维护
  8. java中将查询数据导出_如何在R中将数据框导出到Excel
  9. 【交换机在江湖】第十五章 VLAN隔离篇
  10. LPC1788 NVIC 的设置
  11. 端口映射不能访问80端口
  12. ValueError:only one element tensors can be converted to Python scalars解决办法
  13. Windows 下Apache ftpServer安装和配置
  14. PostgreSQL实战之体系结构
  15. 《机器学习》周志华 学习笔记
  16. [总结]FFMPEG视音频编解码零基础学习方法
  17. 高龄白菜java学习第101天(java数据结构和算法(19))
  18. 2018 ACM-ICPC 宁夏预选赛网赛 B-Goldbach
  19. 【论文阅读】AD-GCL:Adversarial Graph Augmentation to Improve Graph Contrastive Learning
  20. 声呐信号形式及工作参数选择的基本原则

热门文章

  1. 电商网站运营的 7 大关键指标
  2. codeforces 1474 B Different Divisors
  3. ps拖不进图片解决方法
  4. 使用Redis在Hibernate中进行缓存
  5. Day8 - 集合和字符串
  6. 三国志战略版:Daniel_4月28日孟获加强分析
  7. 多触点电器自动测试系统
  8. 设备借还PHP,图书馆自助借还书设备RFID提升借阅体验
  9. 《王者荣耀》美宣设计案例解读-提案和总结的万能方法论
  10. 『转』上海最值得一去的11个烧烤地方(20080824)