一、strcat函数的使用与模拟实现
- 源字符串必须以 '\0' 结束。
- 目标字符串中也得有 \0 ,否则没办法知道追加从哪里开始。
- 目标空间必须有足够的大,能容纳下源字符串的内容。
- 目标空间必须可修改。
- 字符串自己给自己追加,不一定能实现。
strcat函数的使用:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[] = "hello world";
char str2[20]= "xxxxxxxx";
strcat(str2, str1);
printf("%s", str2);
return 0;
}
模拟实现strcat函数:
char *my_strcat(char *dest, const char*src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while(*dest)
{
dest++;
}
while((*dest++ = *src++))
{
;
}
return ret;
}
二、strncat函数的使用与模拟实现
- 将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加一个 \0 字 符。
- 如果source 指向的字符串的长度小于num的时候,只会将字符串中到 \0 的内容追加到destination指向的字符串末尾。
strncat函数的使用:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[] = "hello world";
char str2[20]= "xxxxxxxx";
strncat(str2, str1,4);
printf("%s", str2);
return 0;
}
strncat函数的模拟使用:
char *my_strncat(char *dest, const char *src, size_t n)
{
// 找到目标字符串的末尾
char *dest_ned = dest;
while (*dest_end != '\0')
{
++dest_end;
}
// 将源字符串的前n个字符追加到目标字符串的末尾
for (i = 0; i < n && src[i] != '\0'; ++i)
{
*dest_end++ = src[i];
}
// 添加字符串结束符
*dest_end = '\0';
return dest;
}