strcpy与memcpy重新实现
来源:互联网 发布:wpf 数据绑定 编辑:程序博客网 时间:2024/05/21 09:45
#include<iostream>#include<assert.h>using namespace std;//此版本并未考虑到内存重叠的情况char* strcpy_overwrite1(char*Des,char*Src){assert(Des!=NULL);assert(Src!=NULL);//assert的作用是现计算表达式 expression //如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。char *Res=Des;while ((*Des++=*Src++)!='\0');return Res;}void * memcpy_overwrite(void *dst,const void *src,unsigned int count){assert(dst!=NULL);assert(src!=NULL);char*pdst;char*psrc;if (dst>src&&dst<((char*)src+count))//内存如果重叠冲后往前赋值{pdst=(char*)dst+count-1;//内型的转换psrc=(char*)src+count-1;while (count--){*pdst--=*psrc--;}}else{pdst=(char*)dst;//不重叠的psrc=(char*)src;while(count--){*pdst++=*psrc++;}}return dst;}char* strcpy_overwrite2(char*Des,char*Src){assert(Des!=NULL);assert(Src!=NULL);//assert的作用是现计算表达式 expression //如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。//memcpy(Des,Src,strlen(Src)+1);memcpy_overwrite(Des,Src,strlen(Src));return Des;}int main(){char str[10]="123";//strcpy_overwrite1(str+1,str);//出错//strcpy(str+1,str);strcpy_overwrite2(str+1,str);cout<<str<<endl;return 0;}
0 0
- strcpy与memcpy重新实现
- memcpy与strcpy 实现
- memcpy与strcpy实现
- memcpy与strcpy的实现与区别
- strcpy与memcpy的实现与区别
- Strcpy与memcpy两函数的实现
- memcpy()与strcpy()的完全实现
- strcpy、memcpy与memmove的实现
- strcpy函数与memcpy函数的实现
- memcpy()与strcpy()的完全实现
- strcpy和memcpy的区别与实现
- strcpy函数与memcpy函数实现
- strcpy, memcpy实现...
- Strcpy 和 memcpy 实现
- 实现strcpy , strncpy, memcpy
- strcpy memcpy实现原理
- memset ,memcpy 与strcpy
- memcpy 与 strcpy
- jQuery插件开发精品教程,让你的jQuery提升一个台阶
- 生理周期
- 用Ogre渲染PhysX Cloth的实现方法(附源代码下载)
- IE条件注释 解决浏览器兼容问题
- Struts2实现文件上传和下载
- strcpy与memcpy重新实现
- jackson使用
- viewpager动态加载数据
- ogre shadow(阴影)函数笔记
- 第一个Unity项目Hello Unity
- BZOJ4154——IPSC2015 Generating Synergy
- VS2010出现fatal error C1902: 程序数据库管理器不匹配;请检查安装
- Protocol in Objective-C
- jquery 的(function(){});表示什么