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