C语言中strlen函数模拟实现n种方法

strlen
声明:size_t strlen(const char *str)
头文件: C 标准库 - <string.h>
功能:C库中 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
参数:str – 要计算长度的字符串。
返回值:该函数返回字符串的长度。

方法一:
strlen 函数采用递归形式编写

    # include <stdio.h>
	# include <stdlib.h>
	int strlen (char* num)        // 形参接受实参传递的数组
	{
    	{   if (*num!='\0')                //判断字符串是否结束,'\0'是字符串结束标志
	    	return (1+strlen(num+1));      //采用递归方式,依次数组下标前进一位直到遇到'\0'结束,并返回字符串长度
		}
	return 0;       
	}
	int main()
	{  char arr[]="2kjhhlh56hjk345";      //定义字符串
	int str=strlen (arr);           //定义变量str接受字符长度
	printf("%d\n",str);          //输出字符串长度
	system("pause");
	return 0;
	}  

方法二:
strlen函数采用一般格式编写

    # include <stdio.h>
	# include <stdlib.h>
	int main()
	{ 
	   int count=0;
	  char arr[]="2kjlh5k345";       
	  while (arr[count]!='\0')               //判断字符串是否结束,'\0'是字符串结束标志
	   {     
		count++;                             //为了依次数组下标前进一位直到遇到'\0'
    	}
	printf("%d\n",count);             //输出字符串长度
	system("pause");
	return 0;
	}

方法三:
strlen函数采用指针形式

    # include <stdio.h>
	# include <stdlib.h>
    # include <assert.h>
	int strlen (char* num)        // 形参接受实参传递的数组
	{  
		char* p= num;
		assert(num!=NULL);   //断言,判断指针变量是否为空
		while (*p!='\0')
		{ 
		 p++;
		}
	return p-num;       //指针减指针与数组减数组结果一样,结果是中间元素的个数 (注意无论是数组还是指针相减都应该是在同一个空间,否则无意义)
	}
	int main()
	{  char arr[]="2kjhhlh56hjk345";      //定义字符串
	int str=strlen (arr);           //定义变量str接受字符长度
	printf("%d\n",str);          //输出字符串长度
	system("pause");
	return 0;
	}  

用不同方法编写了strlen函数,实现求数组长度,同一个功能用不同方法会改变程序的效率,因此可以尝试用不同的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值