一、基本知识
定义: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);
}
运行结果
三、代码模拟实现
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;
}
运行结果:
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;
}
运行结果:
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函数的相关知识,通过函数的模拟实现可以让我们更深刻的认识strlen的用法。
欢迎指正~