strcpy和memcpy的区别与实现
2014-10-22 17:37
519 查看
一、区别
(1)内容:strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等
(2)方法:strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度
(3)用途:通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
二、实现(编程风格;出错处理;算法复杂度分析(用于提高性能))
(1)注意编程风格。比如,使用dst、src这样增强可读性的名字。
(2)使用断言来检验输入参数的有效性。
(3)使用const来约束src,表明src对应的内容不能被修改。
(4)返回dst,以便实现链式表达式这样的机制。
char *strcpy(char *strDest, const char *strSrc);
{ //使用断言来检验输入参数的有效性。
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while((*strDest++ = * strSrc++) != ‘\0’ );
return address ;
}
(1)内容:strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等
(2)方法:strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度
(3)用途:通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
二、实现(编程风格;出错处理;算法复杂度分析(用于提高性能))
(1)注意编程风格。比如,使用dst、src这样增强可读性的名字。
(2)使用断言来检验输入参数的有效性。
(3)使用const来约束src,表明src对应的内容不能被修改。
(4)返回dst,以便实现链式表达式这样的机制。
char *strcpy(char *strDest, const char *strSrc);
{ //使用断言来检验输入参数的有效性。
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while((*strDest++ = * strSrc++) != ‘\0’ );
return address ;
}
相关文章推荐
- strcpy和memcpy的区别 与内部实现
- strcpy、memcpy和memmove的区别和实现
- strcpy,memcpy,sprintf的区别及前两个函数的实现
- strcpy memcpy memmove区别和实现
- memcpy与strcpy的实现与区别
- memcpy的用法与strcpy的区别及纯c语言实现
- strcpy、memcpy和memmove的区别和实现
- strcpy与memcpy的实现与区别
- [C/C++笔面试]自己实现memcpy,小结strcpy与memcpy区别
- memset ,memcpy ,memmove,strcpy 的根本区别 与实现
- strcpy、memcpy、memmove的区别及实现
- memset ,memcpy ,memmove,strcpy 的根本区别 与实现
- 常见内存拷贝函数:memcpy()、memmove()、strcpy()的实现及区别
- strcpy和memcpy的区别以及实现
- memcpy()和strcpy的区别
- memcpy和memmove的区别与实现
- C语言中memset ,memcpy 和strcpy 的区别
- memset ,memcpy 和strcpy 的根本区别?
- 关于strcpy的问题,解释一下为什么VS中标准的方法不用memcpy实现
- memset ,memcpy 和strcpy 的根本区别?