字串拷貝函式s

2021-04-06 19:45:56 字數 1506 閱讀 2085

說明:以下函式使用均需標頭檔案string.h.

1.extern char *strcpy(char *dest,char *src);

功能:把src所指由null結束的字串複製到dest所指的陣列中。

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。  返回指向dest的指標。

2.extern char *strncpy(char *dest, char *src, int n);

功能:把src所指由null結束的字串的前n個位元組複製到dest所指的陣列中。

說明:如果src的前n個位元組不含null字元,則結果不會以null字元結束。

如果src的長度小於n個位元組,則以null填充dest直到複製完n個位元組。

src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。

返回指向dest的指標。

3.extern void *memcpy(void *dest, void *src, unsigned int count);

功能:由src所指記憶體區域複製count個位元組到dest所指記憶體區域。

說明:src和dest所指記憶體區域不能重疊,函式返回指向dest的指標。

4.extern void *memset(void *buffer, int c, int count);

功能:把buffer所指記憶體區域的前count個位元組設定成字元c。

說明:返回指向buffer的指標。

下面是一些簡單的說明,用於具體解釋它們之間的區別:

memset用來對一段記憶體空間全部設定為某個字元,一般用在對定義的字串進行初始化為' '或'/0';

例:char a[100];  memset(a, '/0', sizeof(a));

memcpy用來做記憶體拷貝,你可以拿它拷貝任何資料型別的物件,可以指定拷貝的資料長度;

strcpy就只能拷貝字串了,它遇到'/0'就結束拷貝;

例:char a[100],b[50];  strcpy(a,b);如用strcpy(b,a),要注意a中的字串長度(第乙個『/0』之前)是否超過50位,如超過,則會造成b的記憶體位址溢位。

注:字串和字元陣列在c語言裡沒區別

memcpy(dst,src,len)和strncpy(dst,src,len)的區別:

memcpy拷貝src的len長度到dst中,拷貝過程中不考慮src中的字元是什麼,照拷就是。

strncpy拷貝src的len長度到dst中,並在dst的最後加上藝界結束符/0。拷貝過程中若碰到src中有結束符/0,則不管len個字元是否已經拷貝過了,都不再拷貝後續的字元,停止。

最後兩兩總結如下:

strcpy()與strncpy()的區別:前者以/0作為結束符,後者以len為結束標誌.

strncpy()與memcry()的區別:前者拷貝字串,後者拷貝記憶體,可以是任意字元.

memset()與memcpy()的區別:前者給一段記憶體空間賦字元值(' 'or/0),後者為記憶體拷貝.

字串拷貝函式

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

字串拷貝函式整理

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

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

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