持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情
🚩write in front🚩
🔎大家好,我是泽奀,希望你看完后。能对你有所帮助,不足请指正,共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金⇿InfoQ创作者~周榜89»总榜1512🏅
🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠
📝个人主页-掘金 (juejin.cn)💬
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏-[C系列] 从0到1 - 泽奀的专栏 - 掘金 (juejin.cn)🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
🎄strcat() - 连接字符串🎄
strcat() 函数的声明方式如下 👇
char *strcat(char *dest, const char *src)
将源字符串的副本追加到目标字符串。
dest → 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
src → 指向要追加的字符串,该字符串不会覆盖目标字符串。
该函数返回一个指向最终的目标字符串 dest 的指针。
把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。
不能自己给自己追加程序,像这样:
char arr[20] = "Cyuyan"
strcat(arr,arr);
printf("%s\n",arr);
这样子是不行的,本来我的这个数组存放的是: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;
}
运行结果如下 👇
arr1 = hello Cyuyan
让我们来看看它的调试结果的步骤🧐
编辑
🎄创建自定义函数实现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;
}
运行结果如下 👇
hello Cyuyan
编辑
🍊⒈注→在上述的代码细节还是非常多的非常值得调试以下观察它的运行步骤。如
🍎⒉注→'\0'实际上也是对应着C语言的空字符NULL十进制为0的值。