memmove

memmove

void *memmove(void *dst, const void *src, size_t len);

从src中复制len个字符到dst中,能保证复制的数据的准确性,不会影响dst中超出len的部分

#include 
#include 
#include 
#include 

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 
#include 
#include 
#include 

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

你可能感兴趣的:(每天一个c)