c语言求字符串的长度——四种方式

本文介绍了使用C语言计算字符串长度的四种方法:1)使用内置的strlen函数;2)自定义函数遍历字符串;3)利用递归函数;4)通过指针运算。在递归方法中,使用str+1而不是str++是为了保持str的值不变,以实现递归效果。
摘要由CSDN通过智能技术生成

c语言求字符串的长度——四种方式

1.利用strlen函数.

注:strlen函数在使用之前要引头文件#include<string.h>

#include<stdio.h>
#include<string.h>
int main()//一般方法
{
	char arr[] = "bit102";
	printf("%d ", strlen(arr));
	return 0;
}

2.利用自定义函数

#include<stdio.h>
#include<string.h>
int my_strlen(char* str)//数组需要定位,所以创建指针变量
//用自定义函数求字符串的长度
{
	int c = 0;
	while (*str != '\0')
	{
		c++;
		str++;
	}
	return c;
}
int main()
{
	char arr[] = "bit";
	printf("%d ", my_strlen(arr));
	return 0;
}

3.利用函数的递归

#include<stdio.h>
#include<string.h>
int my_strlen(char* str)
{
	if (*str != '\0')
	{
		return 1 + my_strlen(str + 1);//str+1代表着数组的下标.
	}
	else
	{
		return 0;
	}
}
int main()
{
	char arr[] = "bit";
	printf("%d ", my_strlen(arr));
	return 0;
}

在这里为什么不使用str++或++str来代替str+1呢?

原因如下:(1)首先要知道这个程序中递归的原理:my_strlen("bit")=1+my_str_len("it")=1+1+my_strlen("t")=1+1+1+my_strlen("\0")=1+1+1+0=3       所以每次递归都是将字符的第一位与\0进行比较,因此str+1则是将比较过后的第一位去掉,然后进行下一次的比较,并且下一次仍然是比较第一位与\0的关系,同时去掉已经比较过的字符,所以str在这个过程中是不变的。那么如果使用str++,就会造成str自增,那么会导致str的值发生变化,不能达到递归的效果。(自己的理解)

4.利用指针运算

int my_strlen(char* str)
{
	char*start = str;
	while (*str != '\0')
	{
		str++;
	}
	return str - start;
}
int main()
{
	int len = my_strlen("abc");
	printf("%d ", len);
	return 0;
}

指针-指针等于两个指针之间的元素个数;利用指针的运算得到字符串的长度;

  • 9
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值