目录
函数介绍:
函数声明:
具体使用:
注意事项:
字符串⾃⼰给⾃⼰追加,如何?
模拟实现strcat函数:
函数介绍:
被称为字符串的追加/链接函数,它的功能就是在一个字符串后面追加上另外一个字符串。
函数声明:
char *strcat(char *_Destination, const char *_Source)
具体使用:
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[30] = "hello";
char arr2[] = "world";
strcat(arr1, arr2);
printf("%s\n", arr1);//追加字符串
return 0;
}
输出结果:
注意事项:
- 源字符串必须以 '\0' 结束。
- ⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。
- ⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。
- ⽬标空间必须可修改。
和strcpy的原因一样,详细: http://t.csdn.cn/JW6kh
字符串⾃⼰给⾃⼰追加,如何?
int main()
{
char arr1[30] = "hello";
strcat(arr1, arr1);
printf("%s\n", arr1);
return 0;
}
答案是不行的!
strcat的本质:
- strcat在追加的时候会对目标字符串的\0进行覆盖,且追加的原理是把追加的字符串的字符一个一个挪到追加的空间中。
- 所以自己追加自己本质上是把自己的字符进行移动,但是这个移动的过程会覆盖掉原先的\0所以出错。
模拟实现strcat函数:
char* my_strcat(char* dest, const char* str)
{
char* ret = dest;
assert(*dest != NULL);
assert(*str);
//找到目的字符串里的'\0'
while (*dest != '\0')
{
dest++;
}
//追加
while (*dest++ = *str++)
{
;
}
return ret;
}