一
strcat是字符串追加函数,括号中可给定两个参数,其中参数destination要追加的目标地址,而参数二source是用于追加的源地址
总结:strcat是将其函数中参数二的内容追加到参数一字符串后方。
二 下面咱用手敲代码演示其原理
注意:请从main函数开始读
char* my_strcat(char* s1, const char* s2)//注意返回值是char*
{
char* pp = s1;//用pp加加,s1保留首地址
while (*pp)//解引用得到目前pp指向的值,如果是'\0'说明是最后一位。
{ // '\0'的ASCII值是0(为假),会自动跳出循环
pp++;//pp指向地址加1(指向下一个地址)
}
while (*pp = *s2)//将s2的值赋值给*pp(也就是s1地址的内容)
{
pp++;//pp指向下一个地址
s2++;//s2指向下一个地址
}
return s1;//返回s1首地址
}
int main()
{
char s1[100] = { 0 };//s1开大一点,因为s2的内容会填到s1中。太小会导致越界
char s2[50] = { 0 };
printf("请输入s1:\n");
scanf("%s", s1);
printf("请输入s2:\n");
scanf("%s", s1);
printf("s1:%s", my_strcat(s1, s2));//函数返回值为s1首地址所以可以直接打印
return 0;
}
如果上面的读懂了,可以看看下面这个更简洁的,上面只是为了让大家理解
char* my_strcat(char* s1, const char* s2)
{
char* pp = s1;
while (*pp)
{
pp++;
}//找pp'\0'
while (*pp++ = *s2++); //将s2的值赋值给*pp(也就是s1地址的内容)
return s1; //返回s1首地址
}
int main()
{
char s1[100] = { 0};//s1开大一点,因为s2的内容会填到s1中。太小会导致越界
char s2[50] = { 0 };
printf("请输入s1:\n");
scanf("%s", s1);
printf("请输入s2:\n");
scanf("%s", s2);
printf("s1:%s", my_strcat(s1, s2));//函数返回值为s1首地址所以可以直接打印
return 0;
}
注意:以上由于输入用的是scanf,所以输入时不要有空格不然会出错。想输入带空格应用gets