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
* */