(一)strcat的使用:
strcat的作用是将源字符串中的字符追加到目标字符串中;
在cplusplus中
1.函数的声明
char*类型的数组(dest)需要足够大,可以放下追加的字符串;
char*类型的目标源字符串(sour)该字符串不会覆盖原有字符串;
2.返回值
需要返回dest处的地址
3.头文件
#include<string.h>
4.strcat的使用
int main()
{
char arr1[30] = { "abcdef" };
char arr2[20] = { "ghij" };
strcat(arr1, arr2);
printf("%s", arr1);
return 0;
}
5.结果
(二)strcat的实现
首先应该明晰 strcat的作用
将源字符串追加到目的地字符串中(包括\0)
因此 首先 应当判断(assert)传过来的dest与sour地址是否有效;
然后 寻找dest(目的地地址中的\0)
其次 将源字符串替换\0,追加到目的地字符串中;
char* my_strcat(char* dest, char* sour)
{
assert(dest);
assert(sour);
char* tmp = dest;
while (*tmp)
{
tmp++;
//找到\0;
}
while (*tmp = *sour)
{
tmp++;
sour++;
}
return dest;
}
int main()
{
char arr1[30] = { "abcdef" };
char arr2[20] = { "ghij" };
my_strcat(arr1, arr2);
printf(arr1);
return 0;
}
1.结果
(三)strncat
1.函数的声明
函数的参数应该有char*类型的dest(目的地地址)
char*sour(源地址)以及一个size_t num(个数)
2.函数的返回时
与strcat的返回值相同,都需要返回dest的地址
3.头文件
#include<string.h>
4.strncat的使用
int main()
{
char arr1[30] = { "abcdef" };
char arr2[20] = { "ghijkl" };
strncat(arr1, arr2, 4);
printf("%s", arr1);
}
5.结果
(四)strncat的实现
strncat与strcat原理相似,但是增加了一个个数的限制;
给定一个num参数传递过去
char* my_strncat(char* dest, char* sour, int num)
{
assert(dest);
assert(sour);
char* tmp = dest;
while (*tmp)
{
tmp++;
}
while (num)
{
*tmp = *sour;
tmp++;
sour++;
num--;
}
return dest;
}
int main()
{
char arr1[30] = { "abcdef" };
char arr2[20] = { "ghijkl" };
int num = 4;
my_strncat(arr1, arr2, num);
printf("%s", arr1);
}
2.结果