闲来无聊,写一写字符串操作函数strlen,strcpy, strcat的函数原型,听说之前微软还面试过strcpy这个函数的函数原型。看起来简单,但是暗藏玄机~~~~~。
首先,strlen()(先这么写着吧)函数,求字符串的长度。
既然是长度,那返回类型肯定是整型。但是既然长度不能为负,那就定义一个无符号型unsigned int。
当然还要传参,参数类型为char* 指针类型。但是为了防止字符串在函数体内被修改。那么就定义为const char*类型。
函数声明为:unsigned int strlen(const char*);代码如下:
unsigned int strlen_t(const char* str)
{
assert(str != NULL); //字符指针为空,则终止程序
unsigned int length = 0;
while (*str++ != '\0')
{
length++;
}
return length;
}
这个函数原型并不难写。主要是首先检查str是否为空。这里使用了断言assert(),如果str为空,则终止程序执行。
再来看看strcpy()函数。复制字符串内容。
首先呢,还是考虑返回类型,这里可以是void,但是考虑到嵌套(就是这样滴:strcpy(strcpy(str1,str2),str3)),所以使用char*作为返回类型。
函数参数,既然是复制,所以需要两个形参,这里认为第二个字符串内容copy到第一个,所以第一个形参类型为char*,第二个为const char*。
函数声明为:char* strcpy(char* str1,const char* str2);代码如下。
char* strcpy_t(char* str1, const char* str2)
{
assert(str1 != NULL&&str2 != NULL);
char* tmp = str1;
while ((*str1++ = *str2 ++)!= '\0')
{
;
}
return tmp;
}
剩下一个strcat(),不写了。。。。。