自实现strcpy函数
来源:互联网 发布:win10 知乎 编辑:程序博客网 时间:2024/06/04 19:45
int MyStrlen(const char * pStr){int iCount = 0;while (*(pStr+iCount) != '\0'){iCount = iCount + 1;}return iCount;}
void * MyStrcpy(char * const pDest,const char * pSrc){char *pDestTemp = pDest;int iLoop = 0;int iLength = 0;if (NULL == pDest || NULL == pSrc){return pDest;}iLength = MyStrlen(pSrc);/*判断是用于处理源字符串和目标字符串是同一个字符串的情况*/if (pDest<=pSrc || pDest >= pSrc + iLength){for(iLoop=0;iLoop<=iLength;iLoop++){*(pDestTemp+iLoop) = *(pSrc+iLoop);}}else{pDestTemp = pDestTemp + iLength;pSrc = pSrc + iLength;while (iLength >= 0){*(pDestTemp--) = *(pSrc--);iLength = iLength - 1;}}return pDest;}
输入的第一个参数是用于返回拷贝后的字符串的,所以字符串指针地址不能变;
第二个参数,是源字符串,所以不能更改值。
MyStrcpy(strSrc+3,strSrc);MyStrcpy(strSrc,strSrc+3);
逻辑判断就是为了处理上面这两种调用。
可实际系统的strcpy函数,对这种调用处理结果是很不确定的。
这是Ubuntu下执行的结果;
这是Windows下Visual Studio 2008执行的效果。
执行的函数都是MyStrcpy(strSrc+3,strSrc);
让人很是不解。
0 0
- 自实现strcpy函数
- strcpy()函数自实现
- 自写strcpy函数
- C语言 贞姐 实现系统自带strcpy函数
- 自写 strlen strcpy函数
- strcpy函数的实现
- strcpy函数实现
- 实现strcpy函数(转)
- strcpy函数的实现
- 实现strcpy()函数
- strcpy函数的实现
- strcpy函数实现
- strcpy函数的实现
- strcpy函数实现
- c实现strcpy函数
- strcpy() 函数 标准实现
- 实现strcpy函数
- C++ - 实现strcpy函数
- C中调用Lua函数
- IPv6无状态地址自动检测
- Fedora23安装搜狗拼音输入法
- 流媒体服务器
- iOS开发中的循环引用问题
- 自实现strcpy函数
- 关于Android Drawable Resource
- lvs
- 输出链表的倒数第k个节点
- 5-47 打印选课学生名单 (25分)
- 享元模式
- Android Studio优化提升速度,快速流畅不卡屏
- [2016-03-17] Job openings rise in January
- F - 暴力出奇迹