-
方法一:直接引用strlen函数
#include <stdio.h>
#include <string.h>
int main()
{
char arr[]="abcdef";
int len=strlen(arr);
printf("%u",len);
return 0;
}
-
方法二:计数器方法 (创建临时变量)
assert:计算表达式,当结果为false,打印诊断消息并终止程序。
#include <stdio.h>
#include <assert.h>
size_t my_strlen(const char*str) //str是一个指针变量,代表字符地址
{
size_t count=0;
assert(str); //断言,指针为空就报错
while(*str!='\0') //*str是该地址指的一个数据
{
count++;
str++;
}
return count; //用len接收
}
int main()
{
char arr[]="abcdef";
size_t len=my_strlen(arr);
printf("%u\n",len);
return 0;
}
-
方法三:指针-指针
两个指针相减,得到的是两个指针之间的元素个数
#include <stdio.h>
int my_strlen(char*str)
{
char*start=str; //创建一个指针变量来记录首元素地址
while(*str)
{
str++;
}
return str-start; //自增后的数减去首元素
}
int main()
{
char arr[]="abcdef";
size_t len=my_strlen(arr);
printf("%u\n", len);
return 0;
}
-
方法四:递归 (不创建临时变量)
递归的主要思想:大事化小
使用递归的两个必要条件:
1、存在限制条件,当满足这个限制条件的时候,递归便不再继续
2、每次递归调用之后越来越接近这个限制条件
int my_strlen(char*str)
{
if(*str!='\0')
{
return 1+ my_strlen(str+1);
}
else
{
return 0;
}
}
int main()
{
char arr[]="abcdef";
size_t len=my_strlen(arr);
printf("%u\n", len);
return 0;
}