Copying 复制
memcpy 内存拷贝函数
-
api: void *memcpy(void *str1, const void *str2, size_t n)
-
功能:
从存储区 str2 复制 n 个字节到存储区 str1。 -
参数
str1 – 指向内存块的指针。
str2 – 指向内存块的指针。
n – 要被比较的字节数。 -
返回值:
- 该函数返回一个指向目标存储区 str1 的指针。
-
案例
#include <stdio.h> #include <string.h> int main() { const char src[30] = "http://www.test.com"; char dst[30]; memcpy(dst, src, strlen(src) + 1); cout << dst << endl; return(0); }
memmove 内存移动函数
-
api: void *memmove(void *str1, const void *str2, size_t n)
-
功能:
从 str2 复制 n 个字符到 str1,但是在重叠内存块这方面,memmove() 是比 memcpy() 更安全的方法。如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同。 -
参数
str1 – 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
str2 – 指向要复制的数据源,类型强制转换为 void* 指针。
n – 要被复制的字节数。 -
返回值:
- 该函数返回一个指向目标存储区 str1 的指针。
-
案例
#include <stdio.h> #include <string.h> int main() { const char src[] = "newstring"; char* dst = (char *)malloc(sizeof(strlen(src))); memmove(dst, src, strlen(dst)); cout << "src = " << src << endl; cout << "dst = " << dst << endl; if (dst) free(dst); return(0); }
strcpy 字符串复制
-
api: char *strcpy(char *dest, const char *src)
-
功能: 把 src 所指向的字符串复制到 dest。需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。
-
参数
dest – 指向用于存储复制内容的目标数组。<