【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;
}
相关推荐
Tom Boom9 分钟前
1.11.信息系统的分类【DSS】
人工智能·算法·机器学习·职场和发展·分类·数据挖掘·系统架构
White の algo9 分钟前
【C++初阶】内存管理
开发语言·c++
iuhart16 分钟前
Golang中的 “...” 操作符
开发语言·golang
敖行客 Allthinker19 分钟前
Go 语言中 panic 和 recover 的代价:性能与设计的权衡
开发语言·后端·golang
张胤尘20 分钟前
算法每日一练 (9)
数据结构·算法
WenGyyyL22 分钟前
使用OpenCV和MediaPipe库——驼背检测(姿态监控)
人工智能·python·opencv·算法·计算机视觉·numpy
邴越40 分钟前
回文子序列问题解题模板
算法·leetcode·职场和发展
柒十三.43 分钟前
江科大51单片机笔记【12】DS18B20温度传感器(上)
笔记·嵌入式硬件·51单片机
Flower#1 小时前
【图论】判断图中有环的两种方法及实现
算法·深度优先·图论
胡桃不是夹子1 小时前
学会了蛇形矩阵
c++·算法·矩阵