目录
strcat函数介绍
strcat和strncat都是C语言的字符串操作函数,用来将一个字符串拼接到另一个字符串后面。
strcat函数的原型是:
char *strcat(char *dest, const char *src);
它将字符串src拼接到字符串dest的末尾,并返回拼接后的字符串dest。函数中的dest和src两个参数都是指向字符串的指针。
strncat函数介绍
strncat函数的原型是:
char *strncat(char *dest, const char *src, size_t n);
它将src字符串的前n个字符拼接到dest字符串的末尾,并返回拼接后的字符串dest。函数中的dest和src两个参数都是指向字符串的指针,n是要拼接的字符数。
需要注意的是,strncat函数会在拼接字符之后自动添加一个字符串结束符'\0'。所以在拼接之前,dest字符串的末尾必须有足够的空间来存放拼接后的结果。
另外,strncat函数还能够处理src字符串长度小于n的情况,它会将src字符串的所有字符都拼接到dest字符串的末尾。
strcat函数模拟实现
实现步骤
1.找到dest字符串的'\0'
2.从dest的'\0'位置开始,拷贝src字符串,直到src字符串的'\0'
代码如下
char* my_strcat(char* dest, const char* src)
{
//判空
assert(dest && src);
char* ret = dest;//记录目标空间dest的起始地址
//1.找到dest的'\0'
while (*dest != '\0')
{
dest++;
}
//2.拷贝src字符串,直至'\0'
while (*dest++ = *src++)//后置++,两个指针往后走,但是先将src中的字符拷贝到dest中
;//直到src中的\0拷贝到dest时,'\0'是整个表达的结果,跳出循环
return ret;//返回dest的起始地址,不能直接返回dest,此时的dest已经不是起始位置
}
测试代码及运行截图
int main()
{
char str1[100] = "hello ";
char str2[] = "world";
my_strcat(str1,str2);
printf("%s\n", str1);
}
strncat函数模拟实现
strncat函数仅仅比strcat函数多一个参数size_t n,用来限制拼接的字符个数,在strcat函数模拟实现的代码稍作修改即可。
代码如下
char* my_strncat(char* dest, const char* src, size_t n)
{
//判空
assert(dest && src);
char* ret = dest;
//1.找到dest的'\0'
while (*dest != '\0')
{
dest++;
}
//2.拷贝src字符串中n个字符
while (n && (*dest++ = *src++))//n等于0或直到\0拷贝到目标空间中,跳出循环
{
n--;
if (n == 0)//在dest字符串末尾追加'\0'
{
*dest = '\0';
}
}
return ret;
}
测试代码
int main()
{
char str1[100] = "hello ";
char str2[100] = "world";
my_strncat(str1,str2, 2);
printf("%s\n", str1);
}
运行截图
以上就是所有关于strcat和strncat的函数介绍和模拟实现。
感谢各位读者!