1.strlen函数的使用和模拟实现
1.1使用:
c
size_t strlen(const char* str)
返回类型为无符号整型,参数是字符指针
计算的是字符串中到"\0"之前的字符个数
1.2模拟实现:
方法一:计数器式遍历
c
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* arr)
{
int count=0;
assert(arr);
while(*arr)
{
arr++;
count++;
}
return count;
}
int main()
{
char arr[]="abcdef";
size_t ret=my_strlen(arr);
printf("%d\n",ret);
return 0;
}
方法二:递归方式实现
c
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* arr)
{
assert(arr);
if (*arr == '\0')
return 0;
else
return 1 + my_strlen(arr + 1);
}
int main()
{
char arr[] = "abcdef";
size_t ret = my_strlen(arr);
printf("%d\n", ret);
return 0;
}
方法三:指针减指针
c
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* arr)
{
assert(arr);
char* p = arr;
while(*p!='\0')
p++;
return p - arr;
}
int main()
{
char arr[] = "abcdef";
size_t ret = my_strlen(arr);
printf("%zd\n", ret);
return 0;
}