模拟实现strcpy、strcat、strstr、strchr、strcmp、memcpy、memmove
来源:互联网 发布:php在线支付源码 编辑:程序博客网 时间:2024/05/17 02:44
#include<stdio.h>#include<windows.h>#include<assert.h>#include <memory.h>char *my_strcpy(char *dst, const char *src){ assert(dst); assert(src); char *ret = dst; while (*dst++ = *src++) { ; } return ret;}char *my_strcat(char *dst, const char *src){ assert(dst); assert(src); char *ret = dst; while (*dst != '\0') { dst++; } dst = dst; while (*dst++ = *src++) { ; } return ret;}int my_strlen(const char *p){ assert(p); int count = 0; while (*p++ != '\0') { count++; } return count;}char *my_strstr(const char *dst, const char *src){ assert(dst); assert(src); const char *pdst = dst; const char*psrc = src; int len = my_strlen(psrc); while (my_strlen(dst) < my_strlen(src)) { break; } while (my_strlen(pdst) > len) { while (*dst != *psrc) { dst++; } psrc = src; pdst = dst; while (*dst == *psrc) { dst++,psrc++; } if (*psrc == '\0') { return pdst; } } return NULL;}char *my_strchr(char *dst, const char a){ assert(dst); while (a != *dst) { dst++; } return dst;}int my_strcmp(const char *dst, const char *src){ assert(dst); assert(src); int count = 0; int len = my_strlen(dst); while (my_strlen(dst) > len) { return -1; } while (my_strlen(dst) < len) { break; } while ((*dst == *src) && (*dst != '\0')) { dst++; src++; count++; } if (count == len) { return 0; } return 1;}void *my_memcpy(void *dst,const void *src,int size){ assert(dst); assert(src); char *pdst = (char *)dst; char *psrc = (char *)src; char *p = pdst; while ((pdst > psrc) | (pdst < psrc)) { p = "因存在内存覆盖问题,请使用my_memmove函数"; return p; } while (size--) { *pdst++ = *psrc++; } return p;}void *my_memmove(void *dst, const void *src, int size){ assert(dst); assert(src); char *pdst = (char *)dst; char *psrc = (char *)src; char *p = pdst; if (pdst>psrc) { pdst = pdst + size - 1; psrc = psrc + size - 1; while (size--) { *pdst-- = *psrc--; } } if (pdst<psrc) { while (size--) { *pdst++ = *psrc++; } } return p;}
阅读全文
0 0
- 模拟实现strcpy、strcat、strstr、strchr、strcmp、memcpy、memmove
- 模拟库函数(strcpy,strcat,strchr,strstr,strcmp,memcpy,memmove)
- 模拟实现C库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove
- 字符串函数模拟实现(strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove)
- 模拟实现C语言库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- strcpy,strcmp,strstr,strcat,memcpy,memmove的模拟实现
- 模拟实现strlen,strcpy,strcat,strcmp,strstr,memcpy,memmove
- 模拟实现strcpy ,strstr,strcat,strcmp,memcpy,memmove
- 模拟实现函数库中的各种常用函数,1实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- 模拟实现C库函数:strchr、strcmp、strstr、memcpy和memmove
- 模拟实现strlen/strcpy/strcat/strcmp/strstr/strchr/函数
- 模拟实现strcpy,strncpy,strcat,strncat,strcmp,strncmp,memcpy,memmove
- strlen,strcpy,strcat,strcmp,strstr,memcpy,的模拟实现方式
- strcpy,strcat,strstr,strcmp,memmove的实现
- USB协议架构及驱动架构
- 异步赠书:12月《Go Web编程》领航
- Xml的增删改查
- 20171129
- iptables命令使用实例
- 模拟实现strcpy、strcat、strstr、strchr、strcmp、memcpy、memmove
- Java 集合类相关
- CSS——列表(list-style-type)
- 分布式实时日志分析解决方案ELK部署架构
- Vuejs的其他指令
- 阿里云ECS,使用VPC网络统一集群网络出口
- Django 2.0官方文档中文 渣翻 总索引(个人学习,欢迎指正)
- WPF应用程序支持多国语言解决方案
- 【Scikit-Learn 中文文档】预处理数据