strcpy函数和memcpy函数的实现代码
2012-09-29 10:13
232 查看
***********************/ char *strcpy(char *strDestination, const char *strSource) { assert(strDestination && strSource); char *strD=strDestination; while ((*strDestination++=*strSource++)!='\0'); NULL; return strD; }
memcpy是内存复制函数
原型:
void * memcpy(void *dest, void const *src, unsigned int length);
功能:从src的起始位置复制length个字节到dst的内存起始位置。你可以用这种
方法复制任何类型的值,第3个参数指定复制值的长度(以字节计)。
如果src和dst以任何形式出现了重叠,它的结果是未定义的。
void memcpy( void * dest, void * src , size_t n) { char far * pd = (char far * )dest; char far * ps = (char far * )src; long len = (long)sizeof(size_t) * n; for( long i=0; i <n; ++i ) *pd++ = *ps++; }
strcpy
原型声明:extern char *strcpy(char *dest,char *src);
头文件:string.h
功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
/**********************
* C语言标准库函数strcpy的一种典型的工业级的最简实现
* 返回值:
* 返回目标串的地址。
* 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
* 参数:
* strDeatination
* 目标串
* strSource
* 源串
1.source和destin所指内存区域不能重叠,函数返回指向destin的指针。
2.strcpy和memcpy主要有以下3方面的区别。
2.1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2.2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
2.3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
3.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址。
//注意,source和destin都不一定是数组,任意的可读写的空间均可。---wk
相关文章推荐
- strlen函数 strcpy函数 strcmp函数 strstr函数 strcat函数 memcpy函数 memmove函数 以及字符串反转函数的实现
- strcpy函数与memcpy函数的实现
- strcpy函数与memcpy函数(区别及实现 )
- 不调用库函数,实现strcpy函数;编程实现memcpy函数
- strcpy函数、memcpy函数、strncpy函数的实现
- strcpy函数与memcpy函数实现
- strcpy函数与memcpy函数(区别及实现)
- strcpy函数与memcpy函数的区别及其函数实现
- 实现strcpy函数、memcpy函数
- strcpy函数与memcpy函数(区别及实现)
- 运用指针模拟实现一些代码以及memcpy函数与memmove函数的区别
- 用js实现的十进制的颜色值转换成十六进制的代码
- 有关CSDN文章中添加代码进行语法高亮的实现
- strcpy函数的实现
- js实现图片轮番效果,原生代码
- C# Winform下载文件并显示进度条的实现代码
- java常用加密方式代码实现
- 【原】Github系列之二:开源 一行代码实现多形式多动画的推送小红点WZLBadge(iOS)
- php实现mysql数据的增删改查代码
- linux下实现自动从SVN拉代码,打包