继续回忆关于库函数的部分实现,下面是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类型,关于无符号型,在项目开发中一点要谨慎使用,因为有时使用无符号型后,会让运行的结果和期望的结果不一致,所以使用无符号类型时要三思而后行哦…