【C/C++】【三种方法】模拟实现strlen

学习目标:

  • 使用代码模拟实现strlen。

逻辑:

  • strlen 需要输入一个字符串数组类型的变量,并且返回一个整型类型的数据。
  • strlen 需要计算字符串数组有多少个元素。

代码1:使用计数器

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int strlen_mine(char * pc)
{
	int count = 0;
	for (int i = 0; pc[i] != '\0'; i++)
	{
		count++;
	}
	return count;
}

int main()

{
	char str[6] = "ALICE";
	int ret = strlen_mine(str);
	printf("%d", ret);
	return 0;
}

代码2:使用递归

cpp 复制代码
int strlen_mine2(char* pc)
{
	if (*pc == '\0')
	{
		return 0;
	}
	else
	{
		return (strlen_mine2(pc + 1) + 1);
	}
}

int main()

{
	char str[6] = "ALICE";
	int ret = strlen_mine2(str);
	printf("%d", ret);
	return 0;
}

代码3:使用指针 - 指针

cpp 复制代码
int strlen_mine3(char* pc)
{
	assert(pc);
	char* p = pc;
	while(*p != '\0')
	{
		p++;
	}
	return (p - pc);
}

int main()

{
	char str[6] = "ALICE";
	int ret = strlen_mine3(str);
	printf("%d", ret);
	return 0;
}

这里一共提供了三种思路供大家参考。


相关链接:

【C/C++】函数的递归-CSDN博客

C语言指针的介绍-CSDN博客


相关推荐
2601_9620715710 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
淡海水11 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
leobertlan11 小时前
好玩系列:训练一个神经网络模型指导小孩玩游戏2-大局观教练
算法
CS_Zero12 小时前
C语言sizeof是函数吗?
c语言·开发语言
Tisfy12 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
-今昭-13 小时前
《V2V 迁移实战:将 VMware 虚拟机转为 OpenStack 可用 Glance qcow2 镜像》
开发语言·python
乐迪信息13 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉
黑马程序员毕设14 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳15 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
心抵鹊15 小时前
归并排序之翻转对(hard)
数据结构·算法