如何自定义一个函数有strlen的功能(不创建新的临时变量)(c基础)
strlen函数
是求字符串的长度。
详情:简单讲解一下strlen与sizeof(c基础)-CSDN博客
如何自己定义一个函数去替代他呢?
首先既然要求字符串的长度,就要有返回值。
于是用 int my__strlen() 表示返回值是int型。
然后我们要把字符串传递过去。传递字符串时是将字符串的第一个元素的地址传递过去的。
所以我们用指针来接受字符串。
int my__strlen(char* arr)
字符串结束标志是‘\0’
所以当*arr == '\0'是返回一个值,结束函数的调用。
返回值如何计算呢?
可以通过一个变量来计数。
于是 int count
#include<stdio.h>
int my__strlen(char* arr)
{
int count = 0;
while(*arr != '\0')
{
count++;
arr++;
}
return count;
}
int main()
{
/*int n = 0;
scanf_s("%d", &n);
print(n);*/
char arr[] = "abc";
printf("%d", my__strlen(arr));
return 0;
}
那么如果不创建一个count是否也可以实现这功能呢?
可以。用递归的思想。
讲解
核心思路是设置初始返回值是0,如果*arr!=‘\0’,返回值加1.
#include<stdio.h>
int my__strlen(char* arr)
{
if (*arr == '\0')
return 0;
if (*arr != '\0')
{
arr++;
my__strlen(arr);
}
return ( 1 + (my__strlen(arr)));
}
int main()
{
char arr[] = "abc";
printf("%d", my__strlen(arr));
return 0;
}
看到这里可以去看我主页,我学过的都有,我可以写的代码,相信你也可以自己写出来。
I am 36 ,thanks for your looking.