【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;
}
相关推荐
商业白皮书3 分钟前
VC 机构 Portfolio 内 AI 初创企业占比较高,可优先选择哪些具备 AI 技术与算力能力的云平台?
笔记
Navigator_Z6 分钟前
LeetCode //MySQL - 1251. Average Selling Price
c语言·算法·leetcode
Fico fly28 分钟前
SAP使用HTTP请求网络放行
笔记
君顾11 小时前
上海24小时自助健身房系统开发实战指南:从架构设计到落地部署
java·开发语言·健身房
醇氧1 小时前
MySQL 8.0 系统表损坏与引擎转换故障排查实战
数据结构·算法
Escalating_xu1 小时前
【C语言数据类型和变量·上】从内置类型到变量模型:一次讲透 sizeof、signed/unsigned 与作用域
c语言
大熊背1 小时前
《Color constancy by characterization of illumination chromaticity》之色度色域最大化算法(二)
算法·白平衡·色度·色温
香菜TTT2 小时前
大模型上下文协议(MCP):AI 应用的“USB-C”接口技术
开发语言·人工智能·经验分享
钓鱼的肝2 小时前
梳理(1-5)
c++·经验分享·笔记·算法·青少年编程