[转载]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;
        }

相关函数:memccpy,memmove,strcpy

 

关于strcpy()与memcpy()比较:

 

在使用这两个函数中,平时大多都使用strcpy()而忽略了 memcpy(),

 

它们都是从缓冲区拷贝内容。

 

byte a[4];// 每一个字节赋数值类型

a[0]=0;

a[1]=1;

a[2]=0;

a[3]=1;

 

byte c1[4];

memcpy(c1, a, sizeof(byte)*4);

byte c2[4];

strcpy((char*)(byte*)c2, (char*)(byte*)a);

 

只有memcpy()处理的是正确的,所以拿来它们的函数原型比较一下:

 

char *strcpy( char *strDest, const char *strSource);

 

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

 

可以看出 strcpy() 是处理的字符串(遇零结束),

 

memcpy() 是处理一个缓冲区(void*类型的),

 

而我们的内容中有数字0,

 

而数字0又是字符串的结尾字符 ' \0' 的数字表现,

 

字符串拷贝是遇到0就结束,

 

所以,如果要拷贝的缓冲区如果是非字符串那么就尽量用memcpy(),

 

这样可以避免出错的可能。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值