模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
2015-12-04 21:27
886 查看
模拟实现:
strstr
strcpy
strlen
strcat
strcmp
memcpy
memmove
================================
1 strstr 字符串中查找子字符串
2 strcpy 字符串复制
3 strlen 测字符串长度
4 strcat 连接字符串
5 strcmp 字符串复制
6 memcpy 内存复制
7 memmove 内存移动
本文出自 “城市猎人” 博客,请务必保留此出处http://alick.blog.51cto.com/10786574/1719727
strstr
strcpy
strlen
strcat
strcmp
memcpy
memmove
================================
1 strstr 字符串中查找子字符串
char * my_strstr(const char *dest, const char *src) { const char *ret = dest; const char *p = dest; const char *q = src; assert(dest != NULL && src != NULL); while(ret) { q = src; while(*p == *q) { p++; q++; } if(*q == '\0') { return (char *)ret; } else { p = ++ret; } } return NULL; }===========================================
2 strcpy 字符串复制
char *my_strcpy(char *dest,const char *src) { char *ret = dest; assert(dest); assert(src); while(*dest++ = *src++) { ; } return ret; }==========================================
3 strlen 测字符串长度
int my_strlen(const char *s) { const char *p = s; while(*s) { s++; } return s - p; }==========================================
4 strcat 连接字符串
char * my_strcat(char *dest, const char *src) { char *ret = dest; assert(dest); assert(src); while(*dest) { dest++; } while(*dest++ = *src++) { ; } return ret; }=========================================
5 strcmp 字符串复制
int my_strcmp(const char *s1, const char *s2) { assert(s1); assert(s2); while(*s1 == *s2) { if(*s1 == '\0') { return 0; } s1++; s2++; } return (*s1 - *s2 > 0 ? 1 : -1); }============================================
6 memcpy 内存复制
void * my_memcpy(void *buf1,const void *buf2,int count) { void *ret = buf1; char *dest = (char *)buf1; char *src = (char *)buf2; assert(buf1); assert(buf2); while(count--) { *dest++ = *src++; } return ret; }=====================================================
7 memmove 内存移动
void *my_memmove(void *buf1, const void *buf2,int count) { void *ret = buf1; char *dest = (char *)buf1; char *src = (char *)buf2; assert(buf1); assert(buf2); if(dest > src && dest < src + count)//重叠时从后向前移动 { while(count--) { *(dest + count) = *(src + count); } } else { while(count--) { *dest++ = *src++; } } return ret; }
本文出自 “城市猎人” 博客,请务必保留此出处http://alick.blog.51cto.com/10786574/1719727
相关文章推荐
- Pascal's Triangle
- JNI
- openjudge 集合加法
- MYSQL— perror 错误码详情
- UNIX网络编程笔记(6):I/O复用之select函数
- Android
- 集群瓶颈:磁盘IO必读
- SYSPROCESSES 查看连接
- Linux终端的颜色码
- inode节点与硬链接概念详解
- project euler 43
- 在opencv3中利用SVM进行图像目标检测和分类
- 集群瓶颈为什么是磁盘io
- OC 中的方法
- CSS属性和值--备份
- 红黑树
- 趣学Python-教孩子学编程--第十三章
- 【OpenCV入门教程之七】 玩转OpenCV源代码:生成OpenCV工程解决方案与OpenCV源码编译
- C++学习笔记2015.10.5
- php微信公众帐号发送红包