【C语言】字符函数和字符串函数(中)
本篇博客将讲解以下知识:
(1)strcpy的使用和模拟实现
(2)strcat的使用和模拟实现
1、strcpy的使用和模拟实现
(1)strcpy的使用
注意:使用strcpy时需包含头文件:string.h
strcpy的作用是字符串拷贝
strcpy原型:
char* strcpy(char* destination, const char* source);
source是源头,destination是目的地,strcpy是把源头的数据拷贝到目的的空间中去。
代码示例:
strcpy使用注意事项:
(1)源字符串必以‘\0’结束
(2)会将源字符串中的‘\0’拷贝到目标空间
(3)目标空间必须足够大,以确保能存放原字符串
(4)目标空间必须可修改。//可理解为源目标字符串时赋值给数组的。
(2)strcpy的模拟实现
代码:
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest, const char* src)
{
assert(src != NULL);
assert(dest != NULL);
char* ret = dest;
while(*src != '\0')
{
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return ret;
}
int main()
{
char arr1[] = "hello peter";
char arr2[20] = "xxxxxxxxxxxxxxxxxx";
char* ret = my_strcpy(arr2, arr1);
printf("%s\n", ret);
return 0;
}
2、strcat的使用和模拟实现(连接字符串)
注意:使用strcat函数时要保函头文件:string.h
(1)strcat的使用
strcat原型:char* strcat(char* destination, char* source);
作用是:追加source指向的字符串到destination指向的字符串中。
代码示例:
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[20] = "hello";
char arr2[] = " world";
strcat(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
strcat使用注意事项:
(1)原字符串必须以‘\0’结束
(2)目标字符串也得有‘\0’,否则没办法知道追加从哪里开始
(3)目标空间必须有足够的大,能容纳下原字符串的内容
(4)目标空间必须可修改(与strcpy一样)
(2)strcat的模拟实现
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest, const char* src)
{
assert(dest != NULL);
assert(src != NULL);
char* ret = dest;
//1、找到目标空间的'\0'
while (*dest != NULL)
{
dest++;
}
//2、拷贝
while (*src != NULL)
{
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return ret;
}
int main()
{
char arr1[20] = "hello ";
char arr2[] = "world!";
char* s = my_strcat(arr1, arr2);
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", s);
return 0;
}