浅析C++中strlen函数的使用与模拟实现strlen的方法

 更新时间:2021年03月05日 10:17:38   作者:S for N  
这篇文章主要介绍了strlen函数的使用与模拟实现strlen的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

strlen函数的简单运用与模拟实现 strlen函数的简单使用strlen函数的三种模拟实现使用临时变量的方法使用函数递归的方法使用指针相减的方法

strlen函数的简单使用

strlen函数是用来计算字符串长度的一个函数,返回类型是size_t
#include<stdio.h>
#include<string.h>
int main()
{
	char arr[] = "hello world";
	size_t;//返回值是size_t unsigned int
	int len = strlen(arr);
	printf("len=%d\n", len);
	return 0;
}

下面就是对于返回值类型是size_t的一个很形象的例子

int main()
{
	const char* p1 = "abc";
	const char* p2 = "adbcdef";
	if (strlen(p1) - strlen(p2) > 0)
		//因为返回值是无符号数,所以没有负数
	{
		printf("hehe");
	}
	else
	{
		printf("haha");
	}
	return 0;
}

strlen函数的三种模拟实现

使用临时变量的方法

#include<stdio.h>
#include<assert.h>
//模拟实现strlen
size_t my_strlen(const char* str)
{
	int count = 0;//计数器
	assert(str != NULL);
	//断言不是空指针,如果没有这步,当是空指针的时候可能会崩溃
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char arr[] = "hello";
	int len = my_strlen(arr);
	printf("%d\n", len);
	return 0;
}

使用函数递归的方法

#include<stdio.h>
#include<assert.h>
//不使用临时变量
size_t my_strlen(const char* str)
{
	assert(str != NULL);
	if (*str != '\0')
	{
		return 1 + my_strlen(str + 1);
	}
	else
	{
		return 0;
	}
}
int main()
{
	char arr[] = "hello";
	int len = my_strlen(arr);
	printf("%d\n", len);
	return 0;
}

使用指针相减的方法

//指针相减的做法
size_t my_strlen(const char* str)
{
	assert(str != NULL);
	const char* start = str;
	//str 不能初始化char类型,所以用const
	while (*str != '\0')
	{
		str++;
	}
	return str - start;
}
int main()
{
	char arr[] = "hello";
	int len = my_strlen(arr);
	printf("%d\n", len);
	return 0;
}

到此这篇关于strlen函数的使用与模拟实现strlen的文章就介绍到这了,更多相关strlen函数模拟实现strlen内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++类与对象之运算符重载详解

    C++类与对象之运算符重载详解

    运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的
    2021-10-10
  • C++中继承与组合的区别详细解析

    C++中继承与组合的区别详细解析

    C++的“继承”特性可以提高程序的可复用性。正因为“继承”太有用、太容易用,才要防止乱用“继承”
    2013-09-09
  • 详解如何从Matlab中导出清晰的结果图片

    详解如何从Matlab中导出清晰的结果图片

    写文章的时候有时需要matlab导出清晰的图片,如果直接用figure里面的保存的话不够清晰,下面这篇文章主要给大家介绍了关于如何从Matlab中导出清晰的结果图片的相关资料,需要的朋友可以参考下
    2022-06-06
  • C++实现LeetCode(84.直方图中最大的矩形)

    C++实现LeetCode(84.直方图中最大的矩形)

    这篇文章主要介绍了C++实现LeetCode(84.直方图中最大的矩形),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++中的Lambda函数详解

    C++中的Lambda函数详解

    大家好,本篇文章主要讲的是C++中的Lambda函数详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • C++中构造函数与析构函数的详解及其作用介绍

    C++中构造函数与析构函数的详解及其作用介绍

    这篇文章主要介绍了C++中构造函数与析构函数的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • 基于Windows API实现遍历所有文件并删除的方法

    基于Windows API实现遍历所有文件并删除的方法

    这篇文章主要介绍了基于Windows API实现遍历所有文件并删除的方法,是win32应用程序的一个比较典型的文件操作应用技巧,需要的朋友可以参考下
    2015-04-04
  • C语言 makefile学习及实现实例

    C语言 makefile学习及实现实例

    这篇文章主要介绍了C语言 makefile学习及实现实例的相关资料,需要的朋友可以参考下
    2017-03-03
  • C语言由浅入深讲解文件的操作下篇

    C语言由浅入深讲解文件的操作下篇

    C语言具有操作文件的能力,比如打开文件、读取和追加数据、插入和删除数据、关闭文件、删除文件等。与其他编程语言相比,C语言文件操作的接口相当简单和易学
    2022-04-04
  • Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++的教程详解(主要Windows、简要Linux)

    Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++的教程详解(主要Windo

    这篇文章主要介绍了Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++(主要Windows、简要Linux),本文通过实例截图给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03

最新评论