strcpy和memcpy的區別

2022-06-26 03:47:03 字數 1802 閱讀 5891

1樓:出家人詞悲

strcpy和memcpy都是標準c庫函式,它們有下面的特點。

strcpy提供了字串的複製。即strcpy只用於字串複製,並且它不僅複製字串內容之外,還會複製字串的結束符。

已知strcpy函式的原型是:char* strcpy(char* dest, const char* src);

memcpy提供了一般記憶體的複製。即memcpy對於需要複製的內容沒有限制,因此用途更廣。

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

char * strcpy(char * dest, const char * src) // 實現src到dest的複製

char *strdest = dest; //儲存目標字串的首地址

while ((*strdest++ = *strsrc++)!='\0'); //把src字串的內容複製到dest下

return strdest;

}void *memcpy(void *memto, const void *memfrom, size_t size)

strcpy和memcpy主要有以下3方面的區別。

1、複製的內容不同。strcpy只能複製字串,而memcpy可以複製任意內容,例如字元陣列、整型、結構體、類等。

2、複製的方法不同。strcpy不需要指定長度,它遇到被複制字元的串結束符"\0"才結束,所以容易溢位。memcpy則是根據其第3個引數決定複製的長度。

3、用途不同。通常在複製字串時用strcpy,而需要複製其他型別資料時則一般用memcpy

2樓:匿名使用者

strcpy是拷貝字串,以\0為標誌結束(即一旦遇到資料值為0的記憶體地址拷貝過程即停止)

strcpy的原型為

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

而memcpy是給定**和目標後,拷貝指定大小n的記憶體資料,而不管拷貝的內容是什麼(不僅限於字元)

memcpy的原型為

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

c中字串拷貝函式strcpy和記憶體拷貝函式memcpy的區別與實現

3樓:thx_吳

strcpy()函式只能拷貝字串。strcpy()函式將源字串的每個位元組拷貝到目錄字串中,當遇到字串末尾的null字元(\0)時,它會刪去該字元,並結束拷貝。

memcpy()函式可以拷貝任意型別的資料。因為並不是所有的資料都以null字元結束,所以你要為memcpy()函式指定要拷貝的位元組數。

strcpy和memcpy主要有以下3方面的區別。

1、複製的內容不同。strcpy只能複製字串,而memcpy可以複製任意內容,例如字元陣列、整型、結構體、類等。

2、複製的方法不同。strcpy不需要指定長度,它遇到被複制字元的串結束符"\0"才結束,所以容易溢位。memcpy則是根據其第3個引數決定複製的長度。

3、用途不同。通常在複製字串時用strcpy,而需要複製其他型別資料時則一般用memcpy。

在拷貝字串時,通常都使用strcpy()函式;在拷貝其它資料(例如結構)時,通常都使用memcpy()函式。上**你看看:

#include

#include

typedef struct cust-str custrec;

void main (void);

void main (void)

什麼是考研a區和b區什麼是考研A區和B區?

a區和b區指的是一區和二區。研究生考試選拔要求因層次 地域 學科 專業的不同而有所區別。考研國家線劃定分為a b類,其中一區實行a類線,二區實行b類線。一區包括 北京 天津 河北 山西 遼寧 吉林 黑龍江 上海 江蘇 浙江 安徽 福建 江西 山東 河南 湖北 湖南 廣東 重慶 四川 陝西。二區包括 ...

請問開發區和塘沽區是區嗎,請問開發區和塘沽區是一個區嗎

塘沽區是行政區,開發區是功能區。當然不一樣了 塘沽和開發區是平級的 都是天津的一個區 開發區的全稱叫做天津市經濟技術開發區 塘沽區是指天津的一個行政區 開發區是指天津經濟技術開發區 塘沽區是指天津的一個行政區,像大港區 開發區是指天津經濟技術開發區,在塘沽附近,也就是我們經常提到的泰達 英文是ted...

CentOS和RedHatLinux的區別是什麼

centos是 munity enterprise operating system的簡稱,我復們有很多人制 叫它社群企業操作bai 系統du,不管你怎麼zhi叫它,它都是linux作業系統的一個發dao行版本。centos 與 rhel 的區別 centos 3.1 as3 update1cent...