一、基本知识

定义:size_t my_strlen(const char* str)

作用:计算字符串的字符个数

注意:

1.字符串已经把'\0'作为结束标志,strlen函数返回的是在字符串'\0'前面出现的字符个数(不包括'\0')

2.参数指向的字符串必须要以'\0'结束

3.注意函数的返回值为size_t(unsigned int),是无符号的

4.strlen函数的模拟实现

二、函数应用

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

int main()
{
    char arr[] = "abc";//[a b c \0]
    int len =strlen(arr);
    printf("%d\n", len);
}

运行结果

strlen的基本知识及其模拟实现_字符串

三、代码模拟实现

1.计数器方法

#include <stdio.h>
size_t my_strlen(const char* str)
{
	size_t count = 0;
	assert(str);
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}

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

运行结果:

strlen的基本知识及其模拟实现_字符串_02

2.递归的方法

#include <stdio.h>
#include <string.h>

int my_strlen(char* str)
{
	if (*str != '\0')
		return 1 + my_strlen(str+1);
	else
		return 0;
}

int main()
{
	char arr[] = "abc";//[a b c \0]
	int len = my_strlen(arr);
	printf("%d\n", len);

	return 0;
}

运行结果:

strlen的基本知识及其模拟实现_strlen_03

3.指针-指针

#include<stdio.h>
int my_strlen(char* arr)
{
    char* end = arr;
    while (*end)
    {
        end++;
    }
    return (end - arr);//类型相同的(指针-指针)的绝对值等于元素的个数
}
int main()
{
    char arr[] = "abc";//[a b c \0]
    int len = my_strlen(arr);
    printf("%d\n", len);
}

运行结果:

strlen的基本知识及其模拟实现_字符串_04



以上就是strlen函数的相关知识,通过函数的模拟实现可以让我们更深刻的认识strlen的用法。

欢迎指正~