/*
//我自己试着写的
#include<stdio.h>
int main()
{
char st = 012;
scanf("%s ",&st);
int num = strlen(st);
printf("%d",st);
return 0;
}
*/
//正常写法
/*
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "abcde";
int len = strlen(arr);
printf("%d\n",len);
return 0;
}
*/
//传址法
/*
#include<stdio.h>
int my_strlen(char* str//arr)
{
int count = 0;
while(*str!='\0')
{
count++;//计数自加 1 个
str++;//地址位数向后自加 1 位
}
return count;
}
int main()
{
char arr[] = "abc123";
int len=my_strlen(arr);//数组传参,传过去的只有首元素的地址
printf("字符串长度= %d\n",len);
return 0;
}
*/
//递归法 ,不能创建临时变量
#include<stdio.h>
int my_strlen(char* str)//arr
{
//int count = 0;
if(*str!='\0')
{
//count++;//计数自加 1 个
//str++;//地址位数向后自加 1 位
return 1+my_strlen(str+1);
}
return 0;
//return count;
}
int main()
{
char arr[] = {};
scanf("%s",&arr);
int len=my_strlen(arr);//数组传参,传过去的只有首元素的地址
printf("字符串长度= %d\n",len);
return 0;
}
运行结果如下: