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

2021-07-04 02:32:10 字數 2196 閱讀 9011

strcpy

(拷貝字串)

定義函式:

char *strcpy( char *dest, const char *src );

strcpy()

函式只能拷貝字串。strcpy()函式將源字串src的每個位元組拷貝到目的字串dest中,src字串末尾的'/0'也被拷貝過去。strcpy()函式返回引數dest的起始位址。如果引數dest所指的記憶體空間不夠大,可能會造成緩衝溢位(buffer overflow)的錯誤情況(程式設計師必須保證目標字元陣列的空間足夠容納需要複製的字串。如果src字串比dest字串長,多餘的字元仍將被複製,它們將覆蓋原先儲存於dest陣列後面的記憶體空間的值

),在編寫程式時請特別留意,或者用strncpy()來取代。如果引數src和dst在記憶體中出現重疊,其結果是未定義的。

strncpy

(拷貝字串)

定義函式:

char *strncpy( char *dest, const char *src, size_t n );

strncpy()

會將引數src字串拷貝前n個字元至引數dest所指的位址。函式返回引數dest的字串起始位址。

注意n的取值範圍,不要超過src和dest的長度。

#include

#include

int main()

memcpy

(拷貝記憶體內容)

定義函式:

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

memcpy()

用來拷貝src所指的記憶體內容前n個位元組到dest所指的記憶體位址上。與strcpy()不同的是,memcpy()會完整的複製n個位元組,不會因為遇到字串結束'/0'而結束。memcpy()函式可以拷貝任意型別的資料。memcpy()函式返回指向dest的指標。指標src和dest所指的記憶體區域不可重疊。在拷貝字串時,通常都使用strcpy()函式;在拷貝其它資料(例如結構)時,通常都使用memcpy()函式。

memmove

(拷貝記憶體內容)

定義函式:

void *memmove(void *dest, const void *src, size_t n );

memmove()

與memcpy()一樣都是用來拷貝src所指的記憶體內容前n個位元組到dest所指的位址上。不同的是,當src和dest所指的記憶體區域重疊時,memmove()仍然可以正確的處理,不過執行效率上會比使用memcpy()略慢些。該函式返回指向dest的指標。

#include

int main()

memccpy

(拷貝記憶體內容) 

定義函式:

void * memccpy( void *dest, const void *src, int c, size_t n );

memccpy()

用來拷貝src所指的記憶體內容前n個位元組到dest所指的位址上。與memcpy()不同的是,memccpy()會在複製時檢查引數c是否出現,若是則返回dest中值為c的下乙個位元組位址。該函式返回指向dest中值為c的下乙個位元組指標。返回值為null表示在src所指記憶體前n個位元組中沒有值為c的位元組。

#include

#include

int main()

else }

bcopy

(拷貝記憶體內容) 

定義函式:

void bcopy ( const void *src,void *dest ,int n);

bcopy()

與memcpy()

一樣都是用來拷貝

src所指的記憶體內容前

n個位元組到

dest

所指的位址,不過引數

src與

dest

在傳給函式時是相反的位置。建議使用

memcpy()取代。

字串拷貝函式

1.strcpy函式 顧名思義字串複製函式 一般函式原型實現方式 該函式的引數是字元指標,也就是可以是字串變數和字元陣列,因為它們的變數名代表首字元位址。字串預設有乙個null結束符,字元陣列沒有。所以此處需要注意 因為src要求有null結束符,所以字元陣列的長度必須大於等於src包含null結束...

字串拷貝函式s

說明 以下函式使用均需標頭檔案string.h.1.extern char strcpy char dest,char src 功能 把src所指由null結束的字串複製到dest所指的陣列中。說明 src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。返回指向des...

字串拷貝函式整理

void memcpy void dest,const void src,size t n include,函式返回指向dest的指標。由於這玩意的dest和src型別為 void 理論上可以拷貝任何型別的資料,很強大。intsnprintf char str,size t size,const c...