C语言标准库函数介绍(strcpy---实现字符串的拷贝)

1.函数形式

char *strcpy( char *strDestination, const char *strSource );

1.1解析

参数:传进去两个指针变量,参数1为描述,参数2为源头,把参数2的字符串拷贝到实参1中,\0也会拷贝进去。

返回值:返回的是参数1

注意:如果参数1和参数2重叠了,那么就会显示未定义

2.头文件

#include <string.h>

3.作用

拷贝字符串

4.举例

4.1如果我要拷贝数组里面的东西,那么个数该怎么写?

//拷贝字符串
#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "abcdef";
	char arr2[20] = { 0 };
	//把arr2拷贝到arr1上
	char* ret = strcpy(arr2, arr);
	printf("%s\n", ret);
	return 0;
}

1.参数1数量超过参数2:
这边arr2的个数写的是20,大大超出了arr的元素个数
此时arr里面是 arr[0]—a;   arr[1]—b;  ……  arr[7]—\0;
arr2里面则都是0
拷贝时,一个个拷进去,arr2[8]没有拷贝,还是0,对应的ASCII值是\0
也就是说,前面的一个个都对应进去了,而后面的0也会自动识别为\0结束标志

2.数组越界(字符串元素个数再提醒):
如果我arr2里面填了6,明明对应了arr的元素个数,为什么会显示越组???
因为arr里面实际上是7个元素(包含了隐藏的\0),不是我们肉眼所见的abcdef,所以要arr里面的数字,至少是7

4.2 如果我想往里面加东西,该怎么写

用strcat函数

//拷贝字符串
#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "abcdef";
	char arr2[20] = { 0 };
	char arr3[] = "ghm";
	//把arr2拷贝到arr1上
	char* ret = strcpy(arr2, arr);
	ret = strcat(arr2,arr3);
	printf("%s\n", ret);
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值