先来看下strcat的函数原型char * strcat(char* str1,const char* str2),实现的功能是将str2字符串接续写在str1后,比如a[]="1234",b[]="abcd",调用strcat(a,b)则可以得到1234abcd。
函数实现并检测过程如下:
#include <stdio.h>
char * mystrcat(char* str1,const char* str2){
if((NULL == str1)||(NULL == str2)){
return NULL;
}
char* ret=str1;
int i=0;
while(*ret!='\0'){
*ret++;
}
while ((*ret++ = *str2++) != '\0');
return str1;
}
int main(){
char* c=NULL;//为了防止野指针的出现,直接初始化为NULL
char a[]="tuya ";
char b[]="hello world";
c=mystrcat(a,b);
printf("c = %s\n",c);
}
首先检测参数有效性,将str1进行备份char* ret=str1,由于str2是输入型参数,且我们在定义时就采用了const进行修饰,所以不用备份,接下来进行第一次循环,作用是让ret指针来到str1的'\0'处,然后通过第二次的while循环将str2的1内容接续到str1后,达到我们的目的,最后再返回str1,注意返回的一定是str1,而不是ret。
如有错误,请各位看官老爷们多多指出