C语言初阶习题【26】strlen的模拟实现

1. 模拟实现库函数strlen()

先看看库函数是如何实现的

size_t __cdecl strlen ( const char * str)//1.这个size_t就是无符号整形的重命名,因为我们求长度不可能是负数。 2.这里加了const 因为我们不需要修改字符串。
{
        const char *eos = str;

        while( *eos++ ) ; //这里跳出循环的时候是指向了最后一个字符串eos

        return( eos - str - 1 );//3.这里使用的指针相减得到的是两个指针之间的字符串长度
}

3.代码实现

//模拟实现strlen函数


#include<stdio.h>


int  myStrlen(char *str )
{
	unsigned int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char str[] = "goodafternoon";
	int ret = myStrlen(str);
	printf("%d", ret);


	return 0;
}

4.代码改进

后置++
加const(我们只是计算字符串长度不需要修改)
加assert(防止传入空指针)

//模拟实现strlen函数

#include<stdio.h>
#include<assert.h>

int  myStrlen(const char *str )
{
	assert(str);
	unsigned int count = 0;
	while (*str++ != '\0')
	{
		count++;
	}
	return count;
}
int main()
{
	char str[] = "goodafternoon";
	int ret = myStrlen(str);
	printf("%d", ret);

	return 0;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值