`

[转载]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(),

 

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

 

分享到:
评论

相关推荐

    C语言中memcpy 函数的用法详解

    c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。 void* memcpy(void* destination, const void* source, size_t num); void*...

    memcpy函数c语言实现

    memcpy函数c语言实现代码

    C语言函数库函数详细介绍手册

    C语言常用函数库详细的使用说明 字符串函数 bcmp bcopy bzero memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn ...

    C语言常用函数源码 strcmp strlen atoi atol memcpy strchr strstr printf等等

    C语言常用函数源码 strcmp strlen atoi atol memcpy strchr strstr printf等,不可不看.公司面试的时候很容易让写出其中某些函数的源码.这些函数的源码确实简洁,高效

    C语言函数速查手册

    C语言常见的函数速查 字符串函数 bcmp bcopy bzero memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup ...

    对比C语言中memccpy()函数和memcpy()函数的用法

    主要介绍了对比C语言中memccpy()函数和memcpy()函数的用法,二者都是用于复制内存内容,注意区别,需要的朋友可以参考下

    C语言函数速查

    memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi strncpy strnicmp strpbrk ...

    C语言 strcpy和memcpy区别详细介绍

    主要介绍了C语言 strcpy和memcpy区别详细介绍的相关资料,需要的朋友可以参考下

    详解C语言中的memset()函数

    C语言memset()函数:将内存的前n个字节设置为特定的值 头文件: #include memset() 函数用来将指定内存的前n个字节设置为特定的值,其原型为: void * memset( void * ptr, int value, size_t num ); 参数说明...

    C语言讲义.doc

    1.1.22 memset,memcpy,memmove函数 61 1.1.23 指针小结 63 2 字符指针与字符串 64 2.1 指针和字符串 64 2.2 通过指针访问字符串数组 64 2.3 函数的参数为CHAR * 64 2.4 指针数组做为MAIN函数的形参 65 3 内存管理 65...

    C语言答疑解惑工程文件

    博文地址:http://blog.csdn.net/conanswp/article/details/21642331 主要包括C语言中memset、memcpy、malloc等函数的使用

    23道常见的C语言面试题

    文档内容涵盖了const关键字的使用、指针常量与常量指针的区别、static关键字的作用、全局变量与局部变量的区分、宏定义的作用、内存对齐的概念、inline内联函数的特点、C语言实现面向对象特性的方法、memcpy函数的...

    C语言面试总结

    1.10 memcpy函数实现 1.11 memcpy和memmove函数的实现 1.12 strcat函数实现 1.13 使用库函数atoi,将char *→int 1.14 使用库函数itoa,将int→char * 1.15 不使用库函数,将int→char * 1.16 不使用库函数,将char ...

    C语言字符串各函数-具体实现

    strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchr,strnchr,strlen,strnlen,strspn,strpbrk,strtok,strsep,memset,bcopy,memcpy,memmove,memcmp,memscan,strstr,memchr.函数具体实现内容。对理解C语言和C编程有...

    华为安全C库函数代码 securec.zip

    循C11 Annex K (Bounds-checking interfaces)的标准,选取并实现了常见的内存/字符串操作类的函数,如memcpy_s、strcpy_s等函数。 未来将分析C11 Annex K中的其他标准函数,如果有必要,将在该组织中实现。 处理边界...

    吕鑫:最博大精深的C语言视频教程 第15天 【第1堂课】mem族函数的标准答案

    1、 mem族函数的标准答案 研究memset、memcpy和memcmp等函数的源代码;

Global site tag (gtag.js) - Google Analytics