简介
strlen()函数是c语言库中的一个函数,这次我们来实现自己写出这个strlen()函数
正文
第一种为普通的写法:
//非递归实现
#include<stdio.h>
#include<assert.h>
int my_strlen1(const char *p)
{
int count = 0;
assert(p != NULL);
while(*p != '\0')
{
count++;
p++;
}
return count;
}
int main()
{
char str[999] = {0};
int ret = 0;
printf("请输入一串字符:\n");
gets(str);
//scanf("%s",str);
ret = my_strlen1(str);
printf("字符串长度为:%d\n",ret);
return 0;
}
第二种为递归写法:
//递归实现
#include<stdio.h>
#include<assert.h>
int my_strlen2(const char *p)
{
assert(p != NULL);
if(*p == '\0')
{
return 0;
}
else
{
return 1+my_strlen2(p+1);
}
}
int main()
{
char str[999] = {0};
int ret = 0;
printf("请输入一串字符:\n");
gets(str);
ret = my_strlen2(str);
printf("字符串长度为:%d\n",ret);
return 0;
}
第三种为指针-指针的写法
//指针-指针实现
#include<stdio.h>
#include<assert.h>
int my_strlen3(const char *p)
{
const char *s = p;
assert(p != NULL);
assert(s != NULL);
while(*p != '\0')
{
p++;
}
return p-s;
}
int main()
{
char str[999] = {0};
int ret = 0;
printf("请输入一串字符:\n");
gets(str);
ret = my_strlen3(str);
printf("字符串的长度为:%d\n",ret);
return 0;
}
总结
三种方法都可以实现库函数strlen()函数的功能,大家可以互相学习,有建议可以多提出!!!