目录

strlen

​ 函数基本原型

参数解读

返回值详解

函数用法详解


strlen

获得字符串的长度(string length)

 函数基本原型

size_t strlen( const char *string );

参数解读

参数 string
解释 要获取字符串长度的地址

返回值详解

返回的是size_t类型的值,size_t是无符号整数,这里要注意如果用返回值进行减法运算的话可能会出错

以下列代码为例,大家猜猜结果是啥

#include<stdio.h>
#include<string.h>
int main()
{char str1[] = "Hello";char str2[] = "Bit";if (strlen(str2) - strlen(str1) >= 0){printf("str2 > str1");}else {printf("str2 < str1");}return 0;
}

很明显str1中字符串的长度比str2中的字符串长,大家可能感觉结果是打印"str2 < str1",但是实际上结果恰恰相反

为什么是打印"str2 > str1",别急且听我慢慢讲解。

我们先看strlen(str2)和strlen(str1)的值,分别是3和5。而3-5=(-2)是个整数呀,为什么会大于零呢?这就要讨论strlen(str2)和strlen(str1),因为strlen返回值是无符号整数,所以(3)和(5)也是无符号的,所以(3-5)也是无符号整数。

大家估计都知道有符号正整数在计算机存储是原码(下面都是以二进制代码为例)

3的原码:00000000000000000000000000000011

5的原码:00000000000000000000000000000101

有符号负整数在计算机内存储的是补码

-2的原码:10000000000000000000000000000010

-2的反码:11111111111111111111111111111101(原码取反)

-2的补码:11111111111111111111111111111110(反码加1)

第一位为符号位,当一个数存储在计算机内时,计算机都会检测第一位判断这个数是否为正整数或是负整数,而无符数计算机则不判断直接进行转换。

如下,(-2)打印出来是4294967294,是一个超级大的数。

这也是为啥例题能打印出"str2 > str1"的原因。

函数用法详解

见到strlen函数我们可能会想,它是怎么求字符串长度的呢?

当我们给出一个字符串"abcdef"时,这个字符串末尾其实隐藏一个‘\0’做结束标志。

"abcdef"={' a ',' b ',' c ',' d ',' e ',' f ',' \0 '}

而strlen()函数找到字符串的其实位置一直往后找,一直找到‘\0’为止。

专业也是strlen函数一个基本工作原理

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

还有一种情况,没有‘\0’时,如下。

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

这里打印的是19,为什么是19呢?abcdef是放到数组str里面的,数组只申请6个空间。而strlen也是倔脾气,只找到‘\0’才返回值,而在‘\0’之前可能出现19非'\0'的字符。所以才打印了19。这个19是个随机值,我们也不知道下次'\0'之前有多少多字符。

所以,让strlen求字符串时,参数所指向的字符串必须以‘\0’结束。

当我们自己放入一个‘\0’时,就会打印正常值了。

当然,当指定数组大于6,也是可以的

当把abcdef放到str[10]中时,只初始化前6个空间,而后四个空间编号一起会默认初始化为'\0'。

希望大家能够注意以上几点。

【C库函数】strlen函数详解相关推荐

  1. C语言strlen函数详解

    strlen函数详解 一.strlen函数简介 1.函数原型 2.注意事项 二.strlen函数模拟实现 1.计数器方式 2.递归实现 3.指针-指针实现 一.strlen函数简介 1.函数原型 si ...

  2. strlen函数详解(每天认识一个库函数)

    在使用库函数strlen时,我们需要引头文件string.h. 目录 一.使用搜索工具去了解strlen函数 二.需要注意的点 2.1 strlen函数求什么 2.2 参数要求 2.3 注意返回值 三 ...

  3. strlen()函数详解

    头文件:#include <string.h>  strlen()函数用来计算字符串的长度,其原型为: unsigned int strlen (char *s); strlen()用来计 ...

  4. C语言学习11:strlen()函数详解

    目录 1.strlen()函数功能 2.strlen()函数的使用 2.1 数组 3.注意事项 1.strlen()函数功能 strlen()函数 用于 计算 指定字符串的 长度,但 不包括 结束字符 ...

  5. fgets,strlen函数详解

    fgets(): 该函数的原型定义为    char *fgets(char *buf, int bufsize, FILE *stream)   fgets()用来从参数stream所指的文件内读入 ...

  6. c语言 标准库 定时器,C中的标准库函数time函数详解

    C语言中的标准库函数包括一系列日期和时间处理函数,它们都在头文件中说明.下面列出了这些函数.在头文件中定义了三种类型:time_t,struct tm和clock_t. 在头文件中说明的C语言时间函数 ...

  7. 【C库函数】qsort函数详解

    目录 qsort ​ 函数基本原型 参数解读 函数详解 比较函数实现并解读 qsort函数排序代码实现并展示结果 1.排序整型数组 2.排序结构体 qsort 函数是基于快速排序算法实现的一个排序函数 ...

  8. 【C库函数】strncpy函数详解

    目录 strncpy 函数原型 参数讲解 返回值讲解 函数讲解 (1)一般使用场景 (2)特殊使用场景(错误) strncpy         拷贝n个字符到目标字符串中 函数原型 char *str ...

  9. C库函数之 strtol函数详解

    strtol函数详解 函数声明 base为0的情况 endptr的妙用 函数声明 long int strtol (const char* str, char** endptr, int base); ...

最新文章

  1. go get 无法下载问题解决方案及下载 aliyun-oss-go-sdk incompatible.info
  2. Oracle 数据类型及存储方式(袁光东 原创)
  3. 【详细注释】1051 Pop Sequence (25 分)
  4. oracle导数的数据乱码,Oracle10g导数据时中文乱码相关处理
  5. pythonweb自动化项目源码下载_python+requests接口自动化完整项目设计源码
  6. PHP curl请求https
  7. Selenium菜鸟手册
  8. python 对象是什么概念
  9. 证件照素材大合集(全网最全版本,免费分享)
  10. 全栈工程师将会缔造下一个高薪群体
  11. 定时器的用法以及pwm的调速
  12. ArcGIS简单出图
  13. A-level成绩BBB能申英国哪些大学?
  14. ue转换文件格式linux,关于windows与unix之间文件格式转换问题。UE编辑器中(CR/LF)问题...
  15. 循环队列front==rear
  16. Kafka 集群扩容、分区重新分配、SparkStreaming自适应上游kafka topic partition数目变化
  17. python输入一个整数和一个字符_【python零基础入门】基础语法之变量、字符串、数字、规则。...
  18. esd win10 /win8 最简单快速的安装方法 双系统、vhd、wimboot+VHD
  19. groovy if 判断字符串_Groovy快速入门看这篇就够了
  20. FPGA数字IC刷题58道Verilog题解代码及视频讲解【FPGA探索者】【同步/异步FIFO】【跨时钟】

热门文章

  1. tab切换组件nz-tab
  2. w10 保护你的计算机,win10smartscreen筛选器怎么关闭-“windows已保护你的电脑”的关闭方法 - 河东软件园...
  3. 计算机数字音乐分手,我的音乐史记之十四:那些关于分手的歌
  4. 分治算法求n个元素的最大值和最小值
  5. 百度奖学金获得者徐立恒:执着创造价值
  6. 【Codeforces】 A. Computer Game
  7. ATF启动(六):bl32(OP-TEE)-->bl33 ATF ending
  8. 【JsPlumb】基于JsPlumb设计的Web拓扑图编辑器
  9. 多媒体文件格式(五):PCM / WAV 格式
  10. 【新星计划·第三季】一篇关于学习算法和写博客的心得和经验