【C语言】strcat() - 连接字符串。

时间:2022-12-22 20:10:45

​????前言????

这篇博客我们来介绍下字符串函数的使用,可能对字符串函数的使用大多人刚开始学习会学习了一段时间只是知道几种字符串函数的使用 像 strlen()strcpy()strcat()、strcmp()、这四种字符串库函数的使用。而字符串函数绝对不仅仅只有这四种库函数,实际上字符串函数是"五花八门"了,在这篇博客当中我就会详细介绍字符串函数的各种使用。

在使用C语言的字符串库函数的时候记得要添加相应的头文件#include<string.h>               

【C语言】strcat() - 连接字符串。

 ????strcat() - 连接字符串????

strcat() 函数的声明方式如下 ????

char *strcat(char *dest, const char *src)

【C语言】strcat() - 连接字符串。

将源字符串的副本追加到目标字符串。

dest → 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。

src → 指向要追加的字符串,该字符串不会覆盖目标字符串。

该函数返回一个指向最终的目标字符串 dest 的指针。

把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。​

char arr[20] = "Cyuyan"
strcat(arr,arr);
printf("%s\n",arr);

【C语言】strcat() - 连接字符串。

这样子是不行的,本来我的这个数组存放的是:Cyuyan\0,因为这块空间足够长后面还是有内容的。那么如果我们要进行追加的话就会是这个样子:CyuyanCyuyan,本质上我们的斜杠0会在CyuyanCyuyan这个字符串n的后面。但是斜杠0被覆盖了,那么被谁覆盖的呢,就是被自己所追加的 arr 所覆盖了。这样就会构成循环,因为我们永远都找不到反斜杠0-O-

????strcat()函数代码示例???? 

使用 strcat() 函数代码示例如下 ????

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void)
{
char arr1[20] = "hello C";
char arr2[20] = "yuyan";
strcat(arr1, arr2);
printf("arr1 = %s\n", arr1);
return 0;
}

【C语言】strcat() - 连接字符串。

运行结果如下 ???? 

arr1 = hello Cyuyan

让我们来看看它的调试结果的步骤????

【C语言】strcat() - 连接字符串。

????创建自定义函数实现strcat()的功能????

思路很简单其实 ????

Ⅰ→dest 找到目标字符串'\0'

Ⅱ→再把源数据追加到字符串'\0'的后面,注意:是包含'\0'的

示例代码如下:???? 

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
char *My_strcat(char *dest, const char *src)
{
assert(dest && src != NULL);//断言
char *ret = dest;
while (*dest != '\0')//'\0'的ASCLL码值就是0
{
dest++;
}
//dest指向的是'\0'
while (*dest++ = *src++)
{
;
}
/*相当于
while (*src != '\0')
{
*dest++ = *src++;
}*/
return ret;
}
int main(void)
{
char arr1[20] = "hello C";
char arr2[20] = "yuyan";
printf("%s\n", My_strcat(arr1, arr2));
return 0;
}

【C语言】strcat() - 连接字符串。

运行结果如下 ???? 

hello Cyuyan

【C语言】strcat() - 连接字符串。

????⒈注→在上述的代码细节还是非常多的非常值得调试以下观察它的运行步骤。如

????⒉注→'\0'实际上也是对应着C语言的空字符NULL十进制为0的值。