一 strcpy函数
- 函数原型: char * strcpy(char *dst, char *src);
- 函数概念: strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有’\0’结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*。如果dst指针原来有数据,调用strcpy函数后,会覆盖dst指针中的数据, 而且要保证dst指针的所分配的内存大于等于src的内存,否则会越界。
#include<stdio.h>
#include<string.h>
int main(void)
{
char dst[] = "wwwwww";
char str[] = "aaaaaa";
strcpy(dst, str);
printf("%s\n", dst);
return 0;
}
//结果为 aaaaaa
二 strncpy函数
- 函数原型: char *strncpy(char *dst, char *src, int n);
- 函数概念: strncpy 是C语言的库函数之一,来自C语言标准库,作用是将src所指向的字符串中以src地址开始的前n个字节复制到dst所指的地址中,并返回dst。
- strncp函数相较于strcpy函数的优点就是strncpy函数可以选择复制多大的字符串。
– 1 可以有效的避免第一个指针分配的内存大小太小
– 2 可以只选择需要的数据进行复制
#include<stdio.h>
#include<string.h>
int main(void)
{
char dst[10] = "aaaaaaa";
char src[20] = "bbbbbbbbbbbbbbb";
strncpy(dst, src, sizeof(dst) - 1);
printf("%s\n", dst);
return 0;
}
//输出结果为: bbbbbbbbb
三 memcpy函数
- 函数原型: void *memcpy(void *dst, void *src, size_t n);
- 函数区别: 函数原型中dst与src指针都是void类型,就说明这个函数可以复制任何类型的数据,不仅仅是字符串,所以功能比strncpy函数还要强大。
- 函数概念: 将src指针所指向的地址为起点,连续将n个字节的数据复制到dst指针所指向的内存中。
#include<stdio.h>
#include<string.h>
int main(void)
{
int i;
int num[5];
int num1[7] = {1, 2, 3 ,4 ,5 ,6 ,7};
memcpy(num, num1, sizeof(num));//将num1指针所指向地址为起点连续20个字节复制到num中。
for(i = 0; i < 5; i++)
printf("%d\t", num[i]);
printf("\n");
return 0;
//输出结果 1 2 3 4 5
}