Chinaunix首页 | 论坛 | 博客
  • 博客访问: 642663
  • 博文数量: 78
  • 博客积分: 4990
  • 博客等级: 上校
  • 技术积分: 1386
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-13 19:25
文章分类

全部博文(78)

文章存档

2010年(6)

2009年(25)

2008年(47)

我的朋友

分类: C/C++

2008-03-04 00:27:31

一。首先我们来看一下两个函数的基本说明:
strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止)
strcpy的原型为 char *strcpy(char *dest, const char *src)

而memcpy是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字符) memcpy的原型为 void *memcpy(void *dest, const void *src, size_t n);
 
二。两个函数的具体用法区别:
假如我们定义了这样的一个变量:u8_t src_str[32](前提typedef unsigned char u8_t), 我们期望将一个char *(又或者就是 u8_t的一个字符串)拷贝给src_str,通常我们会想到strcpy或者strncpy两个函数,然而经过观察上边的基本说明,我们可以准确的看出,他们的第一个参数是插入char×,而第二个参数是const char *。所以有这种想法的朋友最好放弃。再回到memcpy这个函数上,她之所以能到达到我们的要求,是因为它的一二参数均是void×类型的,可以自动转化为我们需要的类型。所以:memcpy(src_str, dst_str, len)会成功,而用strcpy或者strncpy将会出错或者报警。
 
三。以上仅是个人看法,欢迎指正。
阅读(2476) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~