C語(yǔ)言memcpy函數(shù)原型:extern void *memcpy(void *dest, void *src, unsigned int count);
創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁(yè)找三站合一網(wǎng)站制作公司,專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)站制作、成都網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開(kāi)發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為上千服務(wù),創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣服務(wù)!
用法:#include string.h
功能:由src所指內(nèi)存區(qū)域復(fù)制count個(gè)字節(jié)到dest所指內(nèi)存區(qū)域。
說(shuō)明:src和dest所指內(nèi)存區(qū)域不能重疊,函數(shù)返回指向dest的指針。
舉例:
// memcpy.c
#include syslib.h
#include string.h
main()
{
char *s="Golden Global View";
char d[20];
clrscr();
memcpy(d,s,strlen(s));
d[strlen(s)]=0;
printf("%s",d);
getchar();
return 0;
}
memcpy函數(shù)用法
memcpy指的是c和c++使用的內(nèi)存拷貝函數(shù),memcpy函數(shù)的功能是從源內(nèi)存地址的起始位置開(kāi)始拷貝若干個(gè)字節(jié)到目標(biāo)內(nèi)存地址中。
函數(shù)原型
void *memcpy(void *dest, const void *src, size_t n);
折疊編輯本段功能
從源src所指的內(nèi)存地址的起始位置開(kāi)始拷貝n個(gè)字節(jié)到目標(biāo)dest所指的內(nèi)存地址的起始位置中
折疊編輯本段所需頭文件
C語(yǔ)言:#includestring.h
C++:#includecstring
折疊編輯本段返回值
函數(shù)返回指向dest的指針。
折疊編輯本段說(shuō)明
1.source和destin所指的內(nèi)存區(qū)域可能重疊,但是如果source和destin所指的內(nèi)存區(qū)域重疊,那么這個(gè)函數(shù)并不能夠確保source所在重疊區(qū)域在拷貝之前不被覆蓋。而使用memmove可以用來(lái)處理重疊區(qū)域。函數(shù)返回指向destin的指針.
2.如果目標(biāo)數(shù)組destin本身已有數(shù)據(jù),執(zhí)行memcpy()后,將覆蓋原有數(shù)據(jù)(最多覆蓋n)。如果要追加數(shù)據(jù),則每次執(zhí)行memcpy后,要將目標(biāo)數(shù)組地址增加到你要追加數(shù)據(jù)的地址。
注意:source和destin都不一定是數(shù)組,任意的可讀寫(xiě)的空間均可。
折疊編輯本段函數(shù)實(shí)現(xiàn)
Windows中
coreutils中
Linux中:
折疊編輯本段程序?qū)嵗?/p>
程序例example1
作用:將s中的字符串復(fù)制到字符數(shù)組d中。
輸出結(jié)果:Golden Global View
example2
作用:將s中第13個(gè)字符開(kāi)始的4個(gè)連續(xù)字符復(fù)制到d中。(從0開(kāi)始)
輸出結(jié)果: View
example3
作用:復(fù)制后覆蓋原有部分?jǐn)?shù)據(jù)
輸出結(jié)果:
destination before memcpy:abcdefghijlkmnopqrstuvwxyz0123as6
destination after memcpy: ******************************as6
strcpy和memcpy主要有以下3方面的區(qū)別。
1、復(fù)制的內(nèi)容不同。strcpy只能復(fù)制字符串,而memcpy可以復(fù)制任意內(nèi)容,例如字符數(shù)組、整型、結(jié)構(gòu)體、類(lèi)等。
2、復(fù)制的方法不同。strcpy不需要指定長(zhǎng)度,它遇到被復(fù)制字符的串結(jié)束符"\0"才結(jié)束,所以容易溢出。memcpy則是根據(jù)其第3個(gè)參數(shù)決定復(fù)制的長(zhǎng)度。
3、用途不同。通常在復(fù)制字符串時(shí)用strcpy,而需要復(fù)制其他類(lèi)型數(shù)據(jù)時(shí)則一般用memcpy
memset函數(shù)用來(lái)對(duì)一段內(nèi)存空間全部設(shè)置為某個(gè)字符,常用于內(nèi)存空間初始化。將已開(kāi)辟內(nèi)存空間
s
的首
n
個(gè)字節(jié)的值設(shè)為值
c
。
下面是一個(gè)例子
#include
stdio.h
#include
string.h
main(){
char
*s="golden
global
view";
clrscr();
memset(s,'g',6);
printf("%s",s);
getchar();
return
0;
}
c語(yǔ)言memcpy函數(shù)原型:extern
void
*memcpy(void
*dest,
void
*src,
unsigned
int
count);
用法:#include
string.h
功能:由src所指內(nèi)存區(qū)域復(fù)制count個(gè)字節(jié)到dest所指內(nèi)存區(qū)域。
說(shuō)明:src和dest所指內(nèi)存區(qū)域不能重疊,函數(shù)返回指向dest的指針。
舉例:
//
memcpy.c
#include
syslib.h
#include
string.h
main()
{
char
*s="golden
global
view";
char
d[20];
clrscr();
memcpy(d,s,strlen(s));
d[strlen(s)]=0;
printf("%s",d);
getchar();
return
0;
}
函數(shù)
strchr()
功
能:
在一個(gè)串中查找給定字符的第一個(gè)匹配之處\
用
法:
char
*strchr(char
*str,
char
c);
程序例:
#include
#include
int
main(void)
{
char
string[15];
char
*ptr,
c
=
'r';
strcpy(string,
"this
is
a
string");
ptr
=
strchr(string,
c);
if
(ptr)
printf("the
character
%c
is
at
position:
%d\n",
c,
ptr-string);
else
printf("the
character
was
not
found\n");
return
0;
}