memcpy函数用法

Python035

memcpy函数用法,第1张

memcpy函数用法

memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中。

函数原型

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

折叠编辑本段功能

从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中

折叠编辑本段所需头文件

C语言:#include<string.h>

C++:#include<cstring>

折叠编辑本段返回值

函数返回指向dest的指针。

折叠编辑本段说明

1.source和destin所指的内存区域可能重叠,但是如果source和destin所指的内存区域重叠,那么这个函数并不能够确保source所在重叠区域在拷贝之前不被覆盖。而使用memmove可以用来处理重叠区域。函数返回指向destin的指针.

2.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址。

注意:source和destin都不一定是数组,任意的可读写的空间均可。

折叠编辑本段函数实现

Windows中

coreutils中

Linux中:

折叠编辑本段程序实例

程序例example1

作用:将s中的字符串复制到字符数组d中。

输出结果:Golden Global View

example2

作用:将s中第13个字符开始的4个连续字符复制到d中。(从0开始)

输出结果: View

example3

作用:复制后覆盖原有部分数据

输出结果:

destination before memcpy:abcdefghijlkmnopqrstuvwxyz0123as6

destination after memcpy: ******************************as6

strcpy和memcpy主要有以下3方面的区别。

1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。

2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。

3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

memset函数用来对一段内存空间全部设置为某个字符,常用于内存空间初始化。将已开辟内存空间

s

的首

n

个字节的值设为值

c

下面是一个例子

#include

<stdio.h>

#include

<string.h>

main(){

char

*s="golden

global

view"

clrscr()

memset(s,'g',6)

printf("%s",s)

getchar()

return

0

}

c语言memcpy函数原型:extern

void

*memcpy(void

*dest,

void

*src,

unsigned

int

count)

用法:#include

<string.h>

功能:由src所指内存区域复制count个字节到dest所指内存区域。

说明:src和dest所指内存区域不能重叠,函数返回指向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

}

函数

strchr()

能:

在一个串中查找给定字符的第一个匹配之处\

法:

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

}

C语言memcpy函数原型:extern void *memcpy(void *dest, void *src, unsigned int count)

用法:#include <string.h>

功能:由src所指内存区域复制count个字节到dest所指内存区域。

说明:src和dest所指内存区域不能重叠,函数返回指向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

}