1.使用库函数<string.h>
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = "abcde";
printf("%d ", strlen(arr));
return 0;
}
2.使用循环
#include <stdio.h>
int my_strlen(char* str) //数组传参实际上是传递数组首地址
{
int count = 0; //计数
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "abcde"; 在内存中 a b c d e \0
int i = 0;
i = my_strlen(arr);
printf("%d", i);
return 0;
}
3.递归
#include <stdio.h>
int my_strlen(char* str)
{
if (*str != '\0')
{
return 1 + my_strlen(str+1); //str+1 --> 往后移动,逐渐逼近if的判断条件
}
return 0;
}
int main()
{
char arr[] = "abcde";
int i = 0;
i=my_strlen(arr);
printf("%d", i);
return 0;
}
4.指针-指针
#include <stdio.h>
int my_strlen(char* str)
{
char* start = str; //把arr[0]存给*start
while (*str != '\0')
{
str++;
}
return str - start; //指针-指针得到两个指针之间的元素个数
//指针-指针(前提是这两个指针要指向同一块空间)
}
int main()
{
char arr[] = "abcde";
int len = 0;
len = my_strlen(arr);
printf("%d", len);
return 0;
}