strlen函数的简单运用与模拟实现
strlen函数的简单运用与模拟实现
strlen函数的简单使用
strlen函数是用来计算字符串长度的一个函数,返回类型是size_t
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "hello world";
size_t;//返回值是size_t unsigned int
int len = strlen(arr);
printf("len=%d\n", len);
return 0;
}
下面就是对于返回值类型是size_t的一个很形象的例子
int main()
{
const char* p1 = "abc";
const char* p2 = "adbcdef";
if (strlen(p1) - strlen(p2) > 0)
//因为返回值是无符号数,所以没有负数
{
printf("hehe");
}
else
{
printf("haha");
}
return 0;
}
strlen函数的三种模拟实现
使用临时变量的方法
#include<stdio.h>
#include<assert.h>
//模拟实现strlen
size_t my_strlen(const char* str)
{
int count = 0;//计数器
assert(str != NULL);
//断言不是空指针,如果没有这步,当是空指针的时候可能会崩溃
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "hello";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
使用函数递归的方法
#include<stdio.h>
#include<assert.h>
//不使用临时变量
size_t my_strlen(const char* str)
{
assert(str != NULL);
if (*str != '\0')
{
return 1 + my_strlen(str + 1);
}
else
{
return 0;
}
}
int main()
{
char arr[] = "hello";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
使用指针相减的方法
//指针相减的做法
size_t my_strlen(const char* str)
{
assert(str != NULL);
const char* start = str;
//str 不能初始化char类型,所以用const
while (*str != '\0')
{
str++;
}
return str - start;
}
int main()
{
char arr[] = "hello";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}