strcpy()
原型:extern char *strcpy(char *dest,char *src);
用法:#include <string.h>
功能:把src所指由NULL(\0)結束的字符串複製到dest所指的數組中。
說明:src和dest所指內存區域不能夠重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針。
例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串長度(第一個‘\0’以前)是否超過50位,如超過,則會形成b的內存地址溢出。
memcpy()
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#include <string.h>
功能:由src所指內存區域複製count個字節到dest所指內存區域。
說明:src和dest所指內存區域不能重疊,函數返回指向dest的指針。能夠拿它拷貝任何數據類型的對象。
舉例:char a[100],b[50]; memcpy(b, a, sizeof(a));注意如用sizeof(a),會形成b的內存地址溢出。
memset()
原型:extern void *memset(void *buffer, int c, int count);
用法:#include <string.h>
功能:把buffer所指內存區域的前count個字節設置成字符c。
說明:返回指向buffer的指針。用來對一段內存空間所有設置爲某個字符。
舉例:char a[100];memset(a, '\0', sizeof(a));
注意事項:
strcpy和memcpy主要有如下3方面的區別。
複製的內容不一樣。strcpy只能複製字符串,而memcpy能夠複製任意內容,例如字符數組、整型、結構體、類等。
複製的方法不一樣。strcpy不須要指定長度,它遇到字符串結束符"\0"便結束。memcpy則是根據其第3個參數決定複製的長度。
用途不一樣。一般在複製字符串時用strcpy,而須要複製其餘類型數據時則通常用memcpy。