C语言中的strlen函数怎么使用
C语言中的strlen函数怎么使用
今天小编给大家分享一下C语言中的strlen函数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
C语言中的字符串函数有如下这些
获取字符串长度
strlen
长度不受限制的字符串函数
strcpy
strcat
strcmp
长度受限制的字符串函数
strncpy
strncat
strncmp
字符串查找
strstr
strtok
错误信息报告
strerror
接下来看看如何实现它们
获取字符串长度
strlen
我们看看文档是怎样说的,如下
strlen文档
size_tstrlen(constchar*str);
Get string length
获取字符串长度
Returns the length of the C stringstr.
返回C字符串str的长度
The length of a C string is determined by the terminating null-character: AC stringis as long as the number of characters between the beginning of the string and the terminating null character (without including the terminating null character itself).
C字符串长度是由'\0'来确定的,也就是说从字符串的第一个开始只要遇到'\0'就结束长度计算(不包含'\0')
This should not be confused with the size of the array that holds the string. For example:
不用困惑你创建的数组的大小,比如这样
charmystr[100]="teststring";
defines an array of characters with a size of 100
char
s, but the C string with whichmystrhas been initialized has a length of only 11 characters. Therefore, whilesizeof(mystr)
evaluates to100
,strlen(mystr)
returns11
.定义一个大小为100的数组
mystr
,然后mystr
就已经被初始化为一个长度为11的字符串了。所以呢,sizeof(mystr)
会得出100
, 而strlen(mystr)
会返回11
.
综上,可以知道
字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。
该函数只认'\0',参数指向的字符串必须要以 '\0' 结束。
注意函数的返回值为size_t,是无符号的
实现
strlen函数的实现有好几种。
比如
计数器的方法
递归
指针 - 指针
接下来一一实现。
1. 计数器:使用一个变量来记录 - count
断言指针不为空是个好习惯~
intmy_strlen(char*str){intcount=0;assert(str!=NULL);while(*str!='\0')//while(*str){count++;str++;}returncount;}
就一直找'\0',当*str不是'\0'时,就count++,str++,直到遇到'\0'停止,然后返回count就是长度了。
2. 递归
断言指针不为空是个好习惯~
intmy_strlen(char*str){assert(str!=NULL);char*p=str;while(*p=='\0'){return0;}return1+my_strlen(p+1);}
比如传入的str地址为 1000
那么 1 + my_strlen(p + 1) 中,p + 1,指针偏移后就是1001,以此类推。
1 + 1 + my_strlen(p + 1)
1 + 1 + 1 + my_strlen(p + 1)
1 + 1 + 1 + 1 + my_strlen(p + 1)
...
1 + 1 + 1 + 1 + ... + 0
最终就可以得出长度。
3. 指针-指针
断言指针不为空是个好习惯~
intmy_strlen(char*str){assert(str!=NULL);char*p=str;while(*p!='\0'){p++;}returnp-str;}
把指针str的地址赋值给一个新的指针p,str作为指向起始地址的指针,不改变它,记录起始地址。
然后通过指针p进行查找'\0',判断当前字符是否为'\0',不是就进行p++,然后继续判断下一个字符,如此循环,直到指针p找到'\0',然后用当前的指针p减去起始指针str进行返回,就是长度了。
以上就是“C语言中的strlen函数怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。
推荐阅读
-
C/C++如何获取CAN信号
-
C语言怎么通过二分查找实现猜数字游戏
-
Phper学C兴趣入门-为什么php手册里说某个字符串函数是二进制安全
-
PHP基础面试题 – 第五天
1、列出五种以上你使用过的PHP的扩展的名称(提示:常用的PHP扩展,如GD扩展)2、写一个函数,用冒泡法实...
-
C语言数据结构中的线性表怎么使用
-
C语言的数据结构怎么理解
C语言的数据结构怎么理解这篇文章主要介绍了C语言的数据结构怎么理解...
-
C语言与C++中内存管理的方法
-
C语言链式队列与循环队列怎么实现
-
C语言冒泡排序怎么实现
-
C语言如何实现斐波那契数列
C语言如何实现斐波那契数列这篇文章主要介绍了C语言如何实现斐波那契...