2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C语言strlen函数求字符串长度及自己实现

C语言strlen函数求字符串长度及自己实现

时间:2021-02-17 13:49:31

相关推荐

C语言strlen函数求字符串长度及自己实现

strlen

size_t strlen ( const char * str );

1.字符串已经’\0’作为结束标志,strlen函数返回的是在字符串中’\0’前面出现的字符个数(不包含’\0’ )

2.参数指向的字符串必须要以’\0’结束。

3.注意函数的返回值为size_t,是无符号的(易错)

4.学会strlen函数的模拟实现

注意无符号的例子:

int main (){if (strlen ( "abc" ) - strlen ( "abcdef") >0){printf (">\n" );}else{printf ("<=\n" );}return 0;}

代码运行结果是:>

解释:因为strlen函数返回的是无符号整型,3 - 6 = -3,当-3在内存中以补码形式保存时,编译器会将其看成无符号的,是个正数,正数补码即原码,所以会是一个大于0的超大数

(如果自己实现的my_strlen函数返回值是int,则上面判断是<=,各有取舍)

自己实现函数

1.计数器版本

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

2.递归版本

int my_strlen(const char* str){assert(str);while(*str != '\0'){return 1+my_strlen(++str);//或者str+1}return 0;}

3.指针-指针版本

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。