C語言字符串字節數組拷貝memmove,memcpy函數地址偏移使用


C 庫函數 void *memmove(void *dest, const void *src, size_t n) 從 src復制 n 個字符到 dest

C 庫函數 void *memcpy(void *dest, const void *src, size_t n) 從存儲區 src復制 n 個字節到存儲區 dest

但是在重疊內存塊這方面,memmove() 是比 memcpy() 更安全的方法。

如果目標區域和源區域有重疊的話,memmove() 能夠保證源串在被覆蓋之前將重疊區域的字節拷貝到目標區域中,復制后源區域的內容會被更改。

如果目標區域與源區域沒有重疊,則和 memcpy() 函數功能相同。

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
int main(){
    const char dest[] = "1234567890";
    const char src[]  = "abcdefghij";
    printf("處理之前 dest = %s, src = %s\n", dest, src);
    memmove(dest, src, 3);
    printf("直接處理 dest = %s, src = %s\n", dest, src);
    memmove(dest+4, ((char * )src)+3, 3);
    printf("偏移處理 dest = %s, src = %s\n", dest, src);
    return 0;
}

目標dest類型可以是 cahr[] ,也可以是char * ,可以直接使用偏移,

源src參數類型必須是 char *,如果不是需要先轉換后再使用偏移。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM