memmove
void *memmove(void *dst, const void *src, size_t len);
从src中复制len个字符到dst中,能保证复制的数据的准确性,不会影响dst中超出len的部分
#include <stdio.h>
#include <ctype.h>
#include <memory.h>
#include <stdlib.h>int main() {char *str = "hello";size_t size = strlen(str);// 动态申请内存空间char *str2 = malloc(size);// 初始化for (int i = 0; i < size; ++i) {*(str2 + i) = 'c';}printf("%s\n", str2);memmove(str2, str, size - 1);printf("%s\n", str2);return 0;
}
结果:
/*** ccccc* hellc* */
指针计算字符长度
#include <stdio.h>
#include <ctype.h>
#include <memory.h>
#include <stdlib.h>int main() {char *str = "hello";size_t size = strlen(str);char *ptr1 = str, *ptr2 = str + size;// 动态申请内存空间char *str2 = malloc(size);// 初始化for (int i = 0; i < size; ++i) {*(str2 + i) = 'c';}printf("%s\n", str2);// 指针计算字符长度memmove(str2, str, ptr2 - ptr1 - 1);printf("%s\n", str2);return 0;
}
结果:
/*** ccccc* hellc* */