计算字符串长度的三种方法(库函数 指针 )【详解】
目录
- 求字符串长度的一般原理
- 方法一: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’位置即可!
计算字符串长度的三种方法(库函数 指针 )【详解】相关推荐
- Shell脚本中计算字符串长度的5种方法
这篇文章主要介绍了Shell脚本中计算字符串长度的5种方法,来自于个人Shell脚本长期的开发经验,需要的朋友可以参考下 有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前S ...
- 计算字符串长度的五种方法
方法一: ------------------------------------------------------------ 方法二; ----------------------------- ...
- 求字符串长度的三种方法(C语言)
如何求字符串的长度? 首先要明白字符串存储的原理. 字符串存储时,是以'\0'结尾,这个就可以作为判断字符串结尾的一个条件. 接下来,只要有字符串的首元素地址,就可以解决求字符串长度的问题啦! 第一种 ...
- C++ 获取string字符串长度的三种方法
1.用string的成员方法length()获取字符串长度 length()比较直观,表示的就是该字符串的长度. #include <string> #include <iostre ...
- c语言求字符串长度的三种方法(部分略微优化)
求字符串的长度,很多人都会直接想到用strlen函数,只需要头文件string.h就可以很轻松的实现,但对于我们c语言的初学者,也应该尝试用其他方法来进行实现,除了strlen函数外有三种方法可供参考 ...
- 【c语言】模拟strlen函数求字符串长度的三种方法
1.借助中间变量(常规方法) #include<stdio.h> int my_strlen(char* str)//接收了数组首元素的地址 {int count = 0;while (* ...
- 让行内元素转化为块元素的三种方法与特点详解
1.添加display:block属性,不脱标,独占一行,默认高度与内容同高. 2.添加浮动,脱标则自动转化块元素,宽默认由内容撑开. 3.添加固定定位或者绝对定位,依然脱离标准流,转化为块元素,宽默 ...
- (转)Shell中获取字符串长度的七种方法
Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...
- 实现java字符串反转的三种方法
实现java字符串反转的三种方法 1.问题描述:将字符串String="abcdefg"实现反转变成 "gfedcba":用java语言实现. 2.解决方法: ...
最新文章
- OpenAI发布CLIP模型快一年了,盘点那些CLIP相关让人印象深刻的工作
- 笑谈Android图表-MPAndroidChart
- JPA零碎要点---JTA全局事物理解
- win10mysql卸载与重装_win10下完全卸载+重装MySQL步骤详解
- 语文好的人是怎么做到的?
- 为什么选用自增量作为主键索引
- 2432功率计使用说明_Quarq功率计的安装、使用和维护
- java中将查询数据导出_如何在R中将数据框导出到Excel
- 【交换机在江湖】第十五章 VLAN隔离篇
- LPC1788 NVIC 的设置
- 端口映射不能访问80端口
- ValueError:only one element tensors can be converted to Python scalars解决办法
- Windows 下Apache ftpServer安装和配置
- PostgreSQL实战之体系结构
- 《机器学习》周志华 学习笔记
- [总结]FFMPEG视音频编解码零基础学习方法
- 高龄白菜java学习第101天(java数据结构和算法(19))
- 2018 ACM-ICPC 宁夏预选赛网赛 B-Goldbach
- 【论文阅读】AD-GCL:Adversarial Graph Augmentation to Improve Graph Contrastive Learning
- 声呐信号形式及工作参数选择的基本原则