【C语言】自定义实现strlen函数的3种方法

这篇具有很好参考价值的文章主要介绍了【C语言】自定义实现strlen函数的3种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,我是苏貝,本篇博客带大家了解C语言中自定义实现strlen函数的3种方法,如果大家觉得我写的不错的话,可以给我一个赞👍吗,感谢❤️
【C语言】自定义实现strlen函数的3种方法,c语言,开发语言


一. 了解strlen函数。


函数原型:size_t strlen( const char string ); //求string的长度
头文件 :#include<string.h>
返回值 :返回的是第一个目的数字的首地址,类型为char

注意:
1.每个字符串结尾处都隐藏有 ‘\0’ ,它是字符串的结束标志
2.strlen遇到 ‘\0’ 时停止,字符串长度为 ‘\0’ 之前的字符个数,不包括 ‘\0’ 。
3.size_t可以认为是无符号整型,用%zd或者%u来接收
若想更详细地了解strlen函数,请点击该链接


二. my_stelen

1.计数器

这是3种方法里面最简单的一种,只用将数组作为函数参数,再用 i充当数组下标,若arr[i]不是转义字符 ‘\0’ ,i++,计数器count++;直到为 ‘\0’ 时,返回计数器count

size_t my_strlen(char arr[])
{
	int i = 0;
    size_t count = 0;
	while (arr[i] != '\0')
	{
		count++;
		i++;
	}
	return count ;
}

int main()
{
	char arr[] = "abcdefg";
	size_t len = my_strlen(arr);
	printf("%zd", len);
	return 0;
}
//7

2.递归(不用创造临时变量)

将数组作为函数实参,实际上传过去的是数组首元素地址,用指针接收变量str接收,对str进行解引用操作找到str指向的字符,若该字符为 ‘\0’ ,则返回0;否则返回1+my_strlen(str + 1),再进入my_strlen函数时,str指向下一位,继续上述判断。

例如:若下面代码中char arr[ ]=“ab”,将数组名arr作为函数实参,用指针str接收,此时str指向数组首元素即字符a。对指针str进行解应用str=a,a!= ‘\0’ ,所以函数返回1+my_strlen(str + 1),再进行下一次递归, 此时str指向下一位字符b。对指针str进行解应用str=b,b!= ‘\0’ ,所以函数返回1+my_strlen(str+1),再进行下一次递归, 此时str指向下一位字符 ‘\0’ 。对指针str进行解应用*str= ‘\0’ ,所以函数返回0,接着返回上一次递归,此时str指向字符b,my_strlen(str + 1) 的结果为0,所以1+my_strlen(str + 1)的结果=1并再将1返回上一次递归。此时str指向字符a,my_strlen(str + 1)的结果=1,所以1+my_strlen(str + 1)结果=2,将2作为最后的值返回。

size_t my_strlen(char* arr)
{
	if (*arr == '\0')
		return 0;
	else
		return 1 + my_strlen(arr + 1);
}

int main()
{
	char arr[] = "abcdefg";
	size_t len = my_strlen(arr);
	printf("%zd", len);
	return 0;
}

3.指针(指针-指针的差值的绝对值是它们之间的元素个数)
若想详细了解 指针-指针,请点击该链接

思想:只要最后指针str指向的是 ‘\0’ ,指针start指向的是数组首元素a,那么str - start就是字符串长度
创建指针变量start存放数组首元素地址(str就是数组首元素地址),再用while循环使得str最后指向 ‘\0’ ,返回两指针的差值文章来源地址https://www.toymoban.com/news/detail-647035.html

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

int main()
{
	char arr[] = "abcdefg";
	size_t len = my_strlen(arr);
	printf("%zd", len);
	return 0;
}

好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞👍吗,感谢看到这里,我们下篇博客见❤️

到了这里,关于【C语言】自定义实现strlen函数的3种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言:Strlen()函数你了解多少?

    C语言中strlen是一种函数,主要用于计算字符串的长度。 🚩 strlen()从字符串的开头位置依次往后面计数,直到遇到‘\\0’停止,所计算的字符串大小为‘\\0’以前的字符所计算的值,最终的字符串长度不包括‘\\0’ 🚩 strlen因为是一种函数,因此调用这个函数需要引用的头文

    2024年02月06日
    浏览(74)
  • C语言的库函数:strlen的用法

    首先,strlen使可以计算字符串的长度,且只能用于字符串,计算的是\\0之前的字符个数。 因为strlen是库函数,所以其头文件是string.h 输出结果如下:  为何arr1输出值为33? 因为arr数组中存放的是a b c d e f \\0 ,而arr1中放的是a b c..\\0。 strlen只有在遇到\\0时才会停下来,而arr1中不知

    2024年02月12日
    浏览(44)
  • 【C语言】指针进阶之sizeof和strlen函数的对比

    目录  1.sizeofyu 2.strlen函数   3.sizeof与strlen的对比   sizeof计算变量所占内存内存空间 大小 的,单位是 字节 ,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的大小。 sizeof 只关注占⽤内存空间的大小,不在乎内存中存放什么数据。 举个例子: 运行结果

    2024年01月22日
    浏览(53)
  • c语言练习41:深入理解字符串函数strlen strcpy strcat

    模拟实现:”strlen   strcpy   strcat strlen   strcat:

    2024年02月09日
    浏览(47)
  • C语言中常用的字符串函数(strlen、sizeof、sscanf、sprintf、strcpy)

      strlen即为string length,顾名思义该函数是用来求字符串长度的。在介绍strlen函数之前,我们要先介绍一下\\\"\\0\\\"这个转义字符。任何一个字符串后面都会隐藏一个\\\"\\0\\\",该转义字符是字符串结束的标志,所以我们在使用strlen函数求字符串长度时,遇到\\\"\\0\\\"时停止读取,此时\\\"\\0\\\"前的

    2024年01月18日
    浏览(51)
  • 【模拟实现】探索strlen:三种方法实现

    目录 一、strlen函数的介绍 二、三种模拟实现 strlen 的方法 (1)计数式 a.完整代码 b.思路解析 c.个人分析 (2)递归解法 a.完整代码 b.思路解析 (3)指针减指针 a.完整代码 b.思路解析 大家好,我是小蔡,下午在刷题的时候发现到自己对于 模拟实现库函数 这方面有些许薄弱,现

    2023年04月13日
    浏览(27)
  • 提升内功之模拟实现库函数strlen/strncpy/strcmp/strcat/strstr/memcpy/memmove

    strlen函数的作用就是求字符串的首元素开始往后计算字符串的长度,直到’\\0‘,但不会把\\0的长度计算进去 strncpy的作用就是从source指向的字符串复制num个字节的内容到destination指向的字符串去 如果source的长度小于num,则填充0 注意source和destination的内容在空间上不要重叠,如

    2024年02月16日
    浏览(43)
  • C语言中的字符串操作函数自定义实现:标准版与限定长度版

            目录 1. 标准字符串操作函数自定义实现 (a) 自定义strcpy函数 (b) 自定义strcat函数 (c) 自定义strcmp函数 2. 限定长度字符串操作函数自定义实现 (a) 自定义strncpy函数 (b) 自定义strncat函数 (c) 自定义strncmp函数  对字符串的操作是不可或缺的一部分。标准库提供了如strcpy、

    2024年01月21日
    浏览(56)
  • 【C语言】三种方法实现字符串逆序函数

    题目如下(示例): 代码如下(示例): 代码如下(示例): 函数和main函数原理一样!这里不做过多的介绍! 代码如下(示例): 代码如下(示例): 注意: 这里的 tmp 和 len 的值可以通过调试来观察变化! 如下图! 这里是函数在一步一步调用,接下来是递归返回的阶

    2023年04月19日
    浏览(52)
  • C语言:字符串函数的使用方法及模拟实现

    方法一:计数器方式 方法二:指针-指针 1.1 strcpy只用于字符串复制,遇到‘\\0’时停止,还会复制字符串的结束符\\\'\\0\\\'; 所以源字符串必须         以’\\0’结束,也会将源字符串的’\\0’拷贝到目标空间。 1.2 目标空间必须可变。 1.3 如果参数dest所指的内存空间不够大,可能

    2024年04月25日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包