C語言 字串的記憶體拷貝處理函式

2021-07-23 04:47:36 字數 947 閱讀 2916

這篇博文我主要是想寫一下函式庫中的memcpy函式,

對於字串來說,我們運用字串中的str類別的函式,但是我們還有一些關於記憶體的拷貝函式。他們操作的物件是記憶體,然後可以接受任何型別的資料進行拷貝。

這個是裡面的memcpy,然後我們一起檢視一下msdn看一看他的原型:

void *memcpy(void *dest,const void *src,size_t count);

與strcpy不同的就是新增了第三個引數,確定操作的位元組數,然後引數型別還有返回型別都是void*

,這表示他可以拷貝任意型別的資料。

然後我們看一下實現:

memcpy:

void *my_memcpy(void *str,const void *dstr,int count)                      

//從記憶體位址開始改變,並確定改變長度,所以用萬能型別去接受

return str;

}

然後會出現乙個問題,如果我們拷貝的資料中dstr的起始位置在str操作之間,那麼在改變str時會出現***,將導致我們的拷貝結果不正確,所以我們應該考慮到會覆蓋的情況。在函式庫中有乙個memmove函式。

memmove:

void *my_memmove(void *pst,const void *dpst,int size)

{          

void *p = pst;

char *psta = (char *)pst;

char *pstb = (char *)dpst;

assert((pst != null) &&(dpst != null));

if(pstb就是遇到被拷貝的空間起始處在拷貝空間中,將會遇到拷貝記憶體覆蓋的現象。在這種情況下我們將考慮從尾部進行拷貝。所以進行了判斷。

本文出自 「剩蛋君」 部落格,請務必保留此出處

字串拷貝和記憶體拷貝函式

strcpy 拷貝字串 定義函式 char strcpy char dest,const char src strcpy 函式只能拷貝字串。strcpy 函式將源字串src的每個位元組拷貝到目的字串dest中,src字串末尾的 0 也被拷貝過去。strcpy 函式返回引數dest的起始位址。如果引數...

C語言字串處理函式

使用有關字串處理的庫函式,務必包含標頭檔案string.h,即 include 1 比較字串大小函式 1 忽略大小寫 strcasecmp 函式原型 int strcasecmp const char s1,const char s2 函式說明 用來比較引數s1和s2字串,比較時會自動忽略大小寫的差...

c語言字串處理函式

很高效的字串處理函式 void memccpy void dest,const void src,int c,size t n 從src所指向的物件複製n個字元到dest所指向的物件中。如果複製過程中遇到了字元c則停止複製,返回指標指向dest中字元c的下乙個位置 否則返回null。void mem...