strcpy和memcpy的区别

 我来答
华是沐老师

2017-10-26 · 教育优质答主
华是沐老师
采纳数:4390 获赞数:8906

向TA提问 私信TA
展开全部
strcpy和memcpy主要有以下3方面的区别。
1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
依开济vE
2017-10-26 · TA获得超过106个赞
知道答主
回答量:76
采纳率:8%
帮助的人:26.4万
展开全部
1.strcpy的用法
strcpy的作用是拷贝字符串,当它遇到'\0'时结束拷贝,原型为:extern char *strcpy(char *dest,char
*src);
就是把src的字符串复制到dest中,例如:
#include
#include
void main(){
char a[20],c[]="i am teacher!";
strcpy(a,c);
cout<<a<<endl;}
此小例子中,char c[]={'i',' ','a','m',' ','t','e','a','c','h','e','r','\0'};字符串一般默认后面有一个结束符,
当用到strcpy(a,c);函数时,把c中的字符串复制到a中,当遇到字符串中默认的结束符后,复
制结束。
2.memcpy的用法
memcpy用来做内存拷贝,可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;
原型函数为void *memcpy(void *dest, const void *src, size_t n);其中dest为返回的值。功能是从源src
所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置。
例如:#include

#include

int main()

{

char *s="Golden Global View";//此字符串总共有18个字符,再加上一个结束符,总共存放19个字符

char d1[20],d2[20];

memcpy(d1,s,(strlen(s)+1));//用memcpy函数,把s中字符串的首地址拷贝到d中,连续复制19个字符
memcpy(d2,s+14,5); //从第14个字符(V)开始复制,连续复制4个字符(View)

printf("%d\n",strlen(s));

printf("%s\n",d1);
printf("%s\n",d2);

return 0;

}
3.memset的用法
memset的作用是对一段内存空间全部设置为某个字符,常用在内存空间的初始化,其原型函数为
void *memset(void *s,int c,size_t n);就是把已开辟内存空间s的首n个字节设置为c。
例如#include
#include

#include

int main()

{

char s[]="Golden Global View";

memset(s,'G',6);//把s中的前6个字符改成G,也就是把Golden改成GGGGGG

printf("%s\n",s);//输出为GGGGGG Global View

return 0;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式