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;
}