strlen函数是一个位于C标准库<string.h>的库函数

是用以计算字符串长度的函数,即为计算 ‘\0’前字符的数量

函数的声明与使用

size_t strlen(const char *str)

参数类型是 字符指针,在调用strlen函数时,需将数组的数组名(也就是首元素地址)传给strlen函数,strlen函数会以此地址为起始位置,向后计算字符串长度。

返回值类型是 size_t,其实也就是 unsigned int 类型。

举个例子

int main()
{char arr[] = "123456789";size_t sz = strlen(arr);printf("%u", sz);return 0;
}

strlen函数的使用非常简单,但有两个需要注意的地方

1.只有strlen函数找到 \0 时,方会停止计算长度。诺所需求长度的字符数组中无 \0,strlen会自起始坐标往后,一直寻找\0,直到找到\0为止。此时函数的返回值是随机的。

int main()
{char arr[] = {'1','2','3','4','5'};size_t sz = strlen(arr);printf("%u", sz);return 0;
}

2.strlen的返回值是 size_t类型的,即无符号整型。

在比较两字符串长度时,不建议使用相减的形式

比如以下这个情况

int main()
{char arr1[] = "123456";char arr2[] = "123456789";size_t sz1 = strlen(arr1);size_t sz2 = strlen(arr2);if (sz1 - sz2 > 0)printf("arr1 > arr2");elseprintf("arr1 < arr2");//printf("%u", sz);return 0;
}

size_t相减时,整个表达式会发生算数转化,在内存中存放的-3的补码会被看作是size_t类型数据的补码,因size_t类型的原反补相同,也就是-3的补码将被看做是表达式结果的原码,是一个非常打的数字。

strlen函数的三种模拟

三种模拟,实际上都是以找\0为根本的,借助不同的思想,完成对字符串长度的计算

1.计数器实现

size_t my_strlen(char* str)
{assert(str != NULL);int count = 0;while (*(str + count++) != '\0');return --count;
}

2.递归实现

size_t my_strlen(char* str)
{if (*str != '\0')return my_strlen(str + 1) + 1;elsereturn 0;
}

3.指针实现

size_t my_strlen(char* str)
{char* ret = str;while (*str++);return str - ret-1;
}

初识strlen函数相关推荐

  1. PHP strlen()函数和strpos()函数

    strlen()  函数返回字符串的长度(字符数) 代码: <?php echo strlen("Hello world!"); ?> 上面的代码将输出:12 strp ...

  2. strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数

    strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...

  3. strlen函数_7.2 C++字符串处理函数

    点击上方"C语言入门到精通",选择置顶 第一时间关注程序猿身边的故事 作者 闫小林 白天搬砖,晚上做梦.我有故事,你有酒么? C++字符串处理函数C语言和C++提供了一些字符串函数 ...

  4. strlen()函数 与 “\0“ 的关系 与 利用;strcmp()

    众所周知 strlen()函数是用来计算长度的; strlen()函数 与 "\0" 的关系 strlen() 在读取字符串的时候 会 一直读到 \0 处停止; 例如以下代码; 结 ...

  5. C/C++ strlen函数为什么不能传入空指针NULL?

    #include <iostream> using namespace std;int main() {int a;char *name = NULL;a = strlen(name);r ...

  6. C和指针之实现strlen函数

    1.问题 求字符串长度,实现strlen函数.           2.代码实现 #include <stdio.h> #include <assert.h>int get_s ...

  7. C和汇编---sizeof运算符和strlen函数

    sizeof sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小. 程序: #include <stdio.h>int main(void) {int a=8;int b = ...

  8. C语言 strlen 函数 - C语言零基础入门教程

    目录 一.strlen 函数简介 二.strlen 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.strlen 函数简介 ...

  9. C语言 sizeof 和 strlen 函数区别 - C语言零基础入门教程

    目录 一.sizeof 函数与 strlen 函数区别 1.获取字符串长度 – 针对字符串 2.获取指针/数组长度 – 针对指针/数组 3.sizeof 获取内存大小 4.经典案例 二.猜你喜欢 零基 ...

  10. strlen函数strcpy函数strcat函数的实现

    一.strlen函数 作用:计算字符串第一次碰到'\0'的长度,不包含'\0'. #include<stdio.h> #include<assert.h>int Strlen( ...

最新文章

  1. ListView分页
  2. 2016年11月2日——jQuery源码学习笔记
  3. Scala消息通信之akka,akka案例
  4. wdcp 去掉index.php,Nginx环境下Oneindex去除网址内的“?”
  5. 2021巨量引擎汽车直播行业研究报告
  6. 医疗用户端app原型/问诊/挂号/开药/视频问诊/电子处方/预约/互联网医疗平台用户端/Axure原型/电话问诊/药品/就诊开药/远程医疗平台/线上问诊/线上看病/rp源文件/移动端医疗原型/门诊
  7. AR人工智能模型训练计算机,ar人工智能模型训练一般采用什么计算机
  8. 在Angular外部使用js调用Angular控制器中提供的函数方法或变量
  9. 在c语言程序中整型常量不能表示的数制是,C源程序中不能表示的数制有哪些
  10. 2016版excel_【收藏转发】全套Excel自动计算表139份(回弹、土工、钢筋、集料、粉煤灰等)...
  11. CentOS系统下载阿里yum源
  12. Origin源码阅读笔记——RPC
  13. Cannot use the diamond generic notation when running in JDK inferior to 1.7 mode
  14. 英语微课-Speaking Confidently
  15. Unity3d打地鼠
  16. C语言pow()函数:求x的y次方(次幂)
  17. MFC模拟高尔顿板实验
  18. InStr Split UBound 几个vb函数
  19. 访问国内网站提示无法访问
  20. 租用国内的云主机的话,阿里云和盛大云,哪个更好?

热门文章

  1. Ctrl+26字母组合快捷键,分分钟变成办公室大表哥
  2. 云计算技术基础【10】
  3. oracle中both,ORACLE:scope=both|memery|spfile
  4. 没有域名怎么用宝塔面板搭建网站?
  5. 电脑端哔哩哔哩视频下载
  6. 提示网站服务器403,浏览器打开网页时出现http 403 禁止访问错误是什么原因?
  7. 山重水复疑无路,柳暗花明又一村。---找工作感想
  8. [Pandas] 数据形状df.shape
  9. 空格、NBSP 造成的 JSON 解析失败问题
  10. lua知识点-unpack