strlen

size_t strlen ( const char * str ); 
  • 字符串以 ’ \0 ’ 作为结束标志,strlen函数返回的是在字符串中 ’ \0 ’ 前面出现的字符个数(不包括’ \0 ')
  • 参数指向的字符 必须要以’ \0 '结束
  • 注意函数的返回值为size_t,是无符号的(易错)
  • 学会strlen函数的模拟实现

举个例子说明这个函数:

#include<stdio.h>
#include<windows.h>
int main()
{
	const char*str1 = "abcdef";
	const char*str2 = "bbb";
	if (strlen(str2) - strlen(str1) > 0)
	{
		printf("str2>str1\n");
	}
	else
	{
		printf("str2<str1\n");
	}
	system("pause");
	return 0;
}

模拟实现(三种方法)

//代码1(计数器方式)
int my_strlen(const char* str)
{
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}
//代码2(不能创建临时变量计数器)-> 递归
int my_strlen(const char* str)
{
	if (*str == '\0')
		return 0;
	else
		return 1 + my_strlen(str + 1);
}
//代码3 指针-指针的方式
int my_strlen(char *s)
{
	char *p = s;
	while (*p != '\0')
		p++;
	return p - s;
}
//假如现在要求abcdef的字符长度
//s在a那,p在f后边
//6 - 0就求出长度了