C 语言库函数 - memmove()
C 语言标准库 <string.h> 函数 void memmove(void str1, const void *str2, size_t n) 从 str2 复制 n 个字符到 str1 。
但是在重叠内存块这方面,memmove() 是比 memcpy() 更安全的方法。
如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改
如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同
头文件
#include <string.h>
函数原型
下面是 memmove() 函数的原型
void *memmove(void *str1, const void *str2, size_t n)
参数
- str1:指向用于存储复制内容的目标数组,类型强制转换为 void* 指针
- str2:指向要复制的数据源,类型强制转换为 void* 指针
- n: 要被复制的字节数
返回值
该函数返回一个指向目标存储区 str1 的指针
范例
下面的范例演示了 memmove() 函数的用法
/** * file: main.c * author: 简单教程(www.twle.cn) * * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ #include <stdio.h> #include <string.h> int main () { char dest[] = "https://www.twle.cn"; const char src[] = "https://twle.cn"; printf("Before memmove dest = %s, src = %s\n", dest, src); memmove(dest, src, 12); printf("After memmove dest = %s, src = %s\n", dest, src); return(0); }
编译运行以上范例,输出结果如下
$ gcc main.c && ./a.out Before memmove dest = https://www.twle.cn, src = https://twle.cn After memmove dest = https://twletwle.cn, src = https://twle.cn