strcat(,)函数的作用是将两个字符串拼接在一起并返回前一个字符串。调用strcat函数需要包含头文件<string.h>。下面我们使用一下它。
#include <stdio.h>
#include <string.h>
int main(){
char str[128]="play volleyball";
char *p=" in the evening";
char *p2;
p2=myStrcat3(str,p);
puts(p2);
puts(str);
return 0;
}
用过之后,来自己定义一个玩玩。
char* myStrcat(char *des,char *soc)
{
assert(des != NULL && soc != NULL);
char *bak=des;
while(*des /*!= '\0'*/){
*des++;
}
while((*des++ = *soc++) != '\0');
*des = '\0';
return bak;
}
myStrcat的内容也很简单,先让指向目标字符串的指针偏移到字符串的最后,然后再循环赋值,最后加上结束标志。这里同样需要用到第三个指针bak,来定位目标字符串的首地址。这个函数还有很多写法。
char* myStrcat2(char *des,char *soc)
{
char *bak=des;
strcpy(des+strlen(des),soc);
return bak;
}
myStrcat2的写法就有点投机取巧,使用strcpy和strlen这两个函数来实现拼接。
char* myStrcat3(char *des,char *soc)
{
assert(des != NULL && soc != NULL);
char *bak=des;
for(;*des != '\0';des++);
while((*des++ = *soc++) != '\0');
*des = '\0';
return bak;
}
myStrcat3则是使用for循环来实现指针的偏移。
不同的系统下,strcat函数的源代码都不一样,我们只需要弄懂它的原理,而且尝试定义出其中的某一种就足够了。