【C语言】strcat函数_字符串追加/连接

前言:在C/C++的学习过程当中一定一定要多刷题,牛客网作为国内内容超级丰富的IT题库,尤其是它的C、C++,有从入门到大厂真题,而且大部分的考试题目也是从中抽取,还有很多面经,推荐大家去牛客网进行刷题练习,点击链接牛客网刷题入口


前言

strcat函数又称字符串追加或字符串连接函数,函数的功能就是在一个字符串后面追加上另外一个字符串。

一、认识并使用strcat函数

1.库函数中strcat函数的声明->头文件string.h

char* strcat(char* Destination, const char* source);

在这里插入图片描述

2.认识strcat函数
strcat函数最后返回的是目的地地址,所以返回类型是char*由于我们只是在目的地字符串后追加源头字符串,所以源头字符串不会被修改,source用const修饰,比较安全。strcat函数将源头字符串的所有字符,包括’\0’,都连接到目的地字符串的后面,这样连接后的字符串才有字符串的结束标志’\0’,程序才不会崩溃。
3.使用

#include<string.h>
#include<stdio.h>
int main()
{
	char arr1[20] = "hello ";//保证目的空间足够大
	char arr2[] = "world";
	printf("%s\n", strcat(arr1, arr2));
	return 0;
}

4.注意
(1)源字符串和目的字符串都必须以’\0’结束
(2)目的地空间必须足够大,足够放下追加后字符串
(3)目标空间必须可修改
(4)strcat函数不能做到自己给自己追加,因为一个字符数组只有一个空间,你要在一个空间进行自己的字符串追加,找到’\0’后,将’a’赋给’\0’,那此字符串不是就没有了字符串结束的标志了吗?代码会进入死循环的
在这里插入图片描述

二、模拟实现strcat函数

1.明确思路

(1)指针断言-作安全性优化,保证dest,src均不为空指针
(2)保留目的字符串的首元素地址,因为之后要返回的是dest的首地址,追加的过程中指针dest的位置会被改动(往后移)
(3)找到目的地字符串的’\0’
(4)从dest的’\0’位置开始依次追加src字符串
首先strcat函数会找到目的地字符串的’\0’,然后将源头字符串的第一个字符,赋给目的地字符串的’\0’,然后继续依次赋值。
(5)返回最开始保留的目的地字符串的首元素地址

2.代码实现

代码如下(示例):

#include<stdio.h>
#include<assert.h>//assert断言的头文件
char* my_strcat(char* dest, char* src)
{
	//1.断言
	assert(dest && src);
	//2.保留目的地字符串首元素地址
	char* ret = dest;
	//3.找到目的地字符串的'\0'
	while (*dest)
	{
		dest++;
	}
	//4.开始依次追加源头字符串
	while (*dest++ = *src++)
	{
		;
	}
	//返回首元素地址
	return ret;
}
int main()
{
	//字符数组存储字符串
	char arr1[30] = "hello";
	char arr2[] = "world";
	//调用自己实现的strcat函数
	my_strcat(arr1, arr2);//将俩字符串的首元素地址传过去
	printf("%s", arr1);//数组名就是首元素地址
	return 0;
}
  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_麦子熟了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值