小C实例也有大梦想——自定义strlen函数

在C语言中,测一个字符串的大小可以用strlen函数来实现,今天写一个自定义strlen函数:

很多人说,这还不简单?

int my_strlen(const char* str)
{
	if (str == NULL)
		return 0;
	int count = 0;
	while ('\0' != *str)
	{
		count++;
		str++;
	}
	return count;
}
很多人第一反应就是这样写吧。

但是我今天要讲的是另外一种方法,为了严谨我加了判断条件,总共三行代码搞定。

int my_strlen2(const char* str)
{
	if (str == NULL)
		return 0;
	return ('\0' != *str) ? (1 + strlen1(++str)) : 0;
}
如果这是面试,是不是第二种方式会给考官一个好的映象?

程序整体代码:

#include <stdio.h>
#include <string.h>

int strlen1(const char* str)
{
	if (str == NULL)
		return 0;
	return ('\0' != *str) ? (1 + strlen1(++str)) : 0;
}

int strlen2(const char* str)
{
	if (str == NULL)
		return 0;
	int count = 0;
	while ('\0' != *str)
	{
		count++;
		str++;
	}
	return count;
}


int main()
{
	char* p = NULL;
	int count1 = 0, count2 = 0, count3 = 0;
	p = (char*)malloc(100 * sizeof(char));
	while (scanf("%s",p)!=EOF)
	{
		count1 = strlen1(p);
		count2 = strlen2(p);
		count3 = strlen(p);
		printf("strlen1(p):%d\t strlen2(p):%d\t strlen(p):%d\t",count1,count2,count3);
	}
	return 0;
}

程序测试:

asdf
strlen1(p):4     strlen2(p):4    strlen(p):4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值