1.strcat
1.1strcat的简单了解
在 cplusplus中,strcat的具体类型如下:
strcat函数是C语言中的一个字符串拼接函数,头文件为#include<string.h>,用于将两个字符串连接成一个字符串。其函数原型为:char *strcat(char *destination, const char *source);
其中,参数destination是目标字符串,参数source是源字符串。该函数会将source字符串拼接在destination字符串的末尾,并返回destination。
1.2strcat的注意事项
注意事项1:使用该函数时需要确保目标字符串dest具有足够的长度来存储源字符串src,否则可能会导致缓冲区溢出等问题。
注意事项2:使用strcat函数时需确保i目标字符串dest与源字符串src中都有’\0’,否则会出现乱码等问题
注意事项3:目标字符串dest必须可以修改
1.3strcat的模拟实现
#include<stdio.h>
#include<string.h>
#include<assert.h>
char* my_strcat(char* dest, char* src)
{
char* ret = dest;
//将dest首元素存入ret中
assert(dest && src);
//断言,保证dest和src不为'\0'
while (*dest != '\0')
//遍历dest,若dest!='\0'dest+1
{
dest++;
}
//此时dest位置来到\0
while (*dest++ = *src++)
//将sre中元素逐个存入dest
{
;
}
return ret;
//返回dest的首元素
}
int main()
{
char dest[20] = "Hello ";
char src[20]="word";
my_strcat(dest, src);
printf("%s\n", my_strcat(dest, src));
return 0;
}
运行结果如下:
2.strncat
2.1strncat的简单了解
strncat函数原型,在cplusplus中如下:
- strncat函数是一个C标准库函数,使用时应包含头文件#include<string.h>;strncat函数功能与strcat函数相同,用于将一个字符串追加到另一个字符串的末尾,但strncat函数不同与strcat函数的是,strncat可以指定追加的字符数量。
- strncat函数原型:char * strncat ( char * dest, const char * src, size_t n );
- 参数说明:
dest 目标字符串
src 源字符串
n 要追加的源字符串的数量
2.2库函数strncat的注意事项
注意事项1:dest要有足够的空间来容纳要拷贝的字符串
注意事项2:strncat会将dest字符串最后的’\0’覆盖掉,字符追加完成后,再追加’\0’
注意事项3:如果num大于字符串src的长度,那么仅将src全部追加到dest的尾部;如果num小于字符串src的长度,该字符会将src的所有字符附加在dest末尾。无论哪种情况,都会在新字符串的末尾添加空字符。
2.3 strncat的模拟实现
char* my_strncat(char* dest, const char* src, size_t num)
{
assert(dest && src);
//断言
char* ret = dest;
//保存dest最初指向的地址
size_t count = 0;
//记录拷贝字符的个数
while (*dest)
//找dest的‘\0’字符
dest++;
while (++count <= num && (*dest++ = *src++));
//将src中的字符追加到dest中,直到将src(源)中的‘\0’也追加到
//dest(目标)或当count大于num时跳出循环
*dest = '\0';
//在字符串末尾追加'\0'
return ret;
//返回目标函数最初指向的地址
}
int main()
{
char arr1[20] = "hello ";//hello world
char arr2[] = "world";
char* s = my_strncat(arr1, arr2, 3);
printf("%s\n", arr1);
printf("%s\n", s);
//printf("%s\n", my_strcat(arr1, arr2));
return 0;
}
运行结果如下: