字符串长度strlen

继续回忆关于库函数的部分实现,下面是strlen函数的实现,里面也有一个小问题,不知道有没有意义…

#include<stdio.h>

int mystrlen(const char *pSrc)
{
	int nval = 0;

	if(NULL == pSrc)
	{
		printf("init pSrc pointer is NULL,please check it!\n");
		return -1;
	}

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

	printf("nval:%d\n",nval);

	return nval;
}

int main(int argc,char argv[])
{
	char *src = "hello world";
	char buf[] = {'a','b','c','\0','d','e','f'};
	char chf[4] = {'a','b','c','d'};
	int nVal = -1;

	nVal = mystrlen(src);
	if(-1 == nVal)
	{
		printf("the string length calculate error\n");
		return -1;
	}
	printf("nVal:%d\n",nVal);

	//what will happen?
	nVal = mystrlen(buf);	
	if(-1 == nVal)
	{
		printf("the string length calculate error\n");
		return -1;
	}
	printf("nVal:%d\n",nVal);
	//Can you get the desired results?
nVal = mystrlen(chf);	
if(-1 == nVal)
{
	printf("the string length calculate error\n");
	return -1;
}
printf("nVal:%d\n",nVal);	

	return 0;
}

关于字符串和指针是一个很有趣的知识点,虽然有时很简单的一个API,但是要是用心去思考,还是会重新发现很多的知识点的吧,这就是孔老夫子论语中的“温故而知新”嘛,其实还有很多可以升级的地方,先写一个可以work的base…
标准库函数的strlen函数的返回值是size_t的类型,定义的原型是unsigned int类型,关于无符号型,在项目开发中一点要谨慎使用,因为有时使用无符号型后,会让运行的结果和期望的结果不一致,所以使用无符号类型时要三思而后行哦…

发布了53 篇原创文章 · 获赞 16 · 访问量 2213

猜你喜欢

转载自blog.csdn.net/m0_37757533/article/details/101604678