strlen 计算给定字符串的长度

 

strlen 计算给定字符串的长度

  • 来自度娘的解释。所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')

  • 我之前的博客区别过strlen和sizeof。今天来说说strlen的三种实现方法。

    #include <assert.h>
    
    #include <stdio.h>
    
    int my_strlen(const char *str) 
    { 
       int count = 0; 
       assert(str != NULL);
    
        while(*str != '\0')
        {
        count++;
        str++;
        }
    return count;
    }

  • 第一种代码大概是最简单的也最容易想到的代码,就是定义一个count当做计数器,一直到数组str为'\0'为止。当然长度不包括'\0'。

 
  
 
  
 int my_strlen(const char* str)
 {
 	assert(str != NULL);
 
 	if(*str == '\0')
 		return 0;
 	else
 		return 1+my_strlen(str+1);
 }



 
  
  • 第二种代码是运用函数递归的思想。

int my_strlen(const char *str)
 {
 	const char *start = str;
 	assert(str != NULL);

    while(*str != '\0')
  	{
  		str++;
 	}
 

 	return str-start;
 }

 int my_strlen(const char *str)
 {
 	const char *start = str;
 	assert(str != NULL);

 	while(*str++)
 	{
 		;
 	}

 	return str-start-1;
 }

  • 第三种代码(上面的两种代码都是一种思想),采用指针的思想,不得不说一个知识点,指针减指针是两个指针之间元素的个数。当然第三种代码也是大多编译器所使用的。
int main()
 {
 	int len = my_strlen("abcdef");
 	printf("len = %d\n", len);
 	return 0;
 }

  • 主函数部分,主要用来调用自己写的my_strlen函数。
  • 写的不好,还请大神多多指点。

猜你喜欢

转载自blog.csdn.net/qq_40421919/article/details/80013811