strcat函数和strncat函数--【C语言】

在这里插入图片描述

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤
📃个人主页 阿然成长日记 👈点击可跳转
📆 个人专栏: 🔹数据结构与算法🔹C语言进阶
🚩 不能则学,不知则问,耻于问人,决无长进
🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍

strcat函数

一、strcat函数的简介

strcat函数在库函数中的定义

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

(1)返回类型----char*–被追加后的目标字符串
(2)参数1:char *destination目标字符串
参数2:const char *source源字符串,不能和目标字符串相同,如需相同追加用strncat函数

二、strcat函数的功能

连接字符串。将源字符串的副本追加到目标字符串。目标中的终止空字符被源的第一个字符覆盖,并且在目标中由两者串联形成的新字符串的末尾包含一个空字符。

#include<stdio.h>
#include<string.h>
int main()
{
	char arr[20] = { "hello" };
	char err[] = { "world" };
	strcat(arr, err);
	printf("%s", arr);
	return 0;
}

在这里插入图片描述
运行结果可以看到,world字符被追加到了hello后。
在这里插入图片描述

三、strcat函数注意事项

1.源字符串必须有’\0’
2.目标空间必须足够大,能容纳下源字符串的内容。
3.目标空间必须可修改。

四、strcat函数的模拟

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest, const char* src)
{
   assert(dest );
   assert(src );
   char* start = dest;
   //先找到dest的最后位置,也就是'\0'处地址
   while (*dest != '\0')
   {
   	dest++;
   }
   while (*src++ = *dest++)
   {
   	;
   }
   return start;
}
int main()
{
   char arr[20] = { "hello"};
   char err[] = { "world" };
   printf("%s", my_strcat(arr, err));
   return 0;
}

在这里插入图片描述
注意;dest != NULL,空也就是0,所以断言assert(dest)也正确。

strncat函数

一、strncat函数简介

char * strncat ( char * destination, const char * source, size_t num );

参数:
1.char * destination:指向目标数组的指针,该数组应包含一个 C 字符串,并且足够大以包含串联的结果字符串,包括其他 null 字符。
2.char * source:要追加的 C 字符串。
3.size_t num:要追加的最大字符数。(size_t是无符号整数类型。)

二、strncat函数的功能

从字符串追加字符
1.将源的第一个数字字符追加到目标,外加一个终止空字符
如果源中 C 字符串的长度小于 num,则仅复制终止空字符之前的内容。

三、strncat函数的使用

#include <stdio.h>
#include <string.h>

int main()
{
	char str1[20];
	char str2[20];
	strcpy(str1, "To be ");
	strcpy(str2, "or not to be");
	strncat(str1, str2, 6);
	puts(str1);
	return 0;
}

在这里插入图片描述

四、strncat函数的模拟

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
char* my_strcnat(char* dest, const char* src, size_t num)
{
	assert(dest != NULL);
	assert(src != NULL);
	char* start = dest;
	//先找到dest的最后位置,也就是'\0'处地址
	while (*dest != '\0')
	{
		dest++;
	}
	while ((*dest++ = *src++) && num--);
	*dest = '\0';

	return start;
}
int main()
{
	char str1[20] = { "abc" };
	char str2[] = { "abcdefg" };
	printf("%s", my_strcnat(str1, str2, 4));
	return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿然成长日记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值