在实现strcat()函数的功能的时候需要考虑到一下几点:
strcat(ret,ptr) ===>"ret ptr"
1、ptr字符串是否为空
2、ret字符串是否要去除结尾的 '\0'
3、连接的时候是否会溢出
4、是否要在连接完成后的结尾加上 '\0'
以下是实现函数功能的代码,注意char *ch = "hello" 这种声明的变量是常量,不能对其改变
#include<string.h>
#include<stdio.h>
char *strcat2(char *ptr1,const char *ptr2)
{
int len;
char *ret = ptr1 ;
//*ptr2是否为空
if(ptr2 == NULL ) return ret;
//跳转到ptr1的结尾
len = strlen(ret);
ret = ret+len;
//判断是否会溢出
if(sizeof(ret)<(strlen(ret)+strlen(ptr2)))
return ret;
//内容写入
while(*ptr2 != '\0'){
*ret++ = *ptr2++; ;
}
*ret = '\0'; //结束加上 '\0'
return ret;
}
int main(){
//不能定义成char *ch = "hello" 这种定义方法是定义成常量,不允许更改
char ch[15]="hello";
char ch2[]= "world";
strcat2(ch,ch2);
printf("%s\n%s\n"ch,ch2)
printf("%s\n",ch);
}