【C语言】【strlen函数的使用与模拟实现】

1.strlen函数的使用和模拟实现

1.1使用:

c 复制代码
size_t strlen(const char* str)

返回类型为无符号整型,参数是字符指针

计算的是字符串中到"\0"之前的字符个数

1.2模拟实现:

方法一:计数器式遍历

c 复制代码
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* arr)
{
  int count=0;
  assert(arr);
  while(*arr)
  {
   arr++;
   count++;
  }
  return count;
}

int main()
{
 char arr[]="abcdef";
 size_t ret=my_strlen(arr);
 printf("%d\n",ret);
 return 0;
}

方法二:递归方式实现

c 复制代码
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* arr)
{
	assert(arr);
	if (*arr == '\0')
		return 0;
	else
		return 1 + my_strlen(arr + 1);

}
int main()
{
	char arr[] = "abcdef";
	size_t ret = my_strlen(arr);
	printf("%d\n", ret);
	return 0;
}

方法三:指针减指针

c 复制代码
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* arr)
{
	assert(arr);
	char* p = arr;
	while(*p!='\0')
		p++;
	return p - arr;
	
}
int main()
{
	char arr[] = "abcdef";
	size_t ret = my_strlen(arr);
	printf("%zd\n", ret);
	return 0;
}
相关推荐
L_cl1 分钟前
【Python 算法零基础 4.排序 ① 选择排序】
数据结构·算法·排序算法
为美好的生活献上中指4 分钟前
java每日精进 5.18【文件存储】
java·开发语言·minio·七牛云存储·s3·七牛云
我的老子姓彭12 分钟前
LWIP的NETCONN接口
笔记·lwip
幼稚诠释青春14 分钟前
Java API学习笔记
笔记·学习
山北雨夜漫步1 小时前
机器学习 Day18 Support Vector Machine ——最优美的机器学习算法
人工智能·算法·机器学习
朱友斌1 小时前
【Golang笔记01】Golang基础语法规则
笔记·学习·golang·go语言·golang笔记
winfredzhang1 小时前
使用Python和Selenium打造一个全网页截图工具
开发语言·python·selenium
拼好饭和她皆失1 小时前
算法加训之最短路 上(dijkstra算法)
算法
栀栀栀栀栀栀1 小时前
2025/5/18
笔记
mahuifa1 小时前
(10)python开发经验
开发语言·python