前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >memset,memcpy,strcpy 的区别

memset,memcpy,strcpy 的区别

作者头像
cloudskyme
发布2018-03-20 11:16:02
3.4K0
发布2018-03-20 11:16:02
举报
文章被收录于专栏:cloudskyme

一.函数原型    strcpy    extern char *strcpy(char *dest,char *src);    #include <string.h>    功能:把src所指由NULL结束的字符串复制到dest所指的数组中    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。    返回指向dest的指针 memcpy extern void *memcpy(void *dest,void *src,unsigned int count); #include <string.h>    功能:由src所指内存区域复制count个字符串到dest所指内存区域.    说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针.    memset    extern void *memset(void *buffer,int c,int count);    #include <string.h>    功能:把buffer所指内存区域的前count个字节设置成字符c    说明:返回指向buffer的指针.

二.区别     memset 用来对一段内存空间全部设置为某个字符,一般用于在对定义的字符串初始化为' '或者'\0';     例: char a[100];           memset(a,'\0',sizeof(a));    memcpy 是用来做内存拷贝,可以用来拷贝任何数据类型的对象,可以指定拷贝的数据长度;    例:            char a[100],b[50];            memcpy(b,a,sizeof(b));   //注意:如果使用sizeof(a),会造成内存溢出    mem是一段内存,他的长度,必须自己记住.memcpy是见着什么拷贝什么。     strcpy 就只能拷贝字符串,它遇到'\0'就结束拷贝;       例:char a[100],b[50];               strcpy(a,b);               如用strcpy(b,a)要注意a中的字符串长度(第一个'\0'之前) 是否超过50,如果超过,则会造成b的 内存溢出.它是不会拷贝'\0'的,所以一般还有加一个语句:               *a='\0'; 三.使用技巧       memset 可以方便的清空一个数据结构的变量或数组.       如:         struct sample_struct        {               char csName[16];               int iSeq;               int iType;        };        对于变量        struct sample_struct stTest;        一般情况下,初始化stTest的方法:         stTest.csName[0]='\0';         stTest.iSeq=0;         stTest.iType=0;     而用memset:        memset(&stTest,0,sizeof(struct sample_struct));     如果是数组:     struct sample_struct TEST[100];     memset(TEST,0,sizeof(struct sample_struct)*100);

strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止) strcpy的原型为 char *strcpy(char *dest, const char *src) 而memcpy是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字符) memcpy的原型为 void *memcpy(void *dest, const void *src, size_t n);

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011-01-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档