实现自己的mystring.h
来源:互联网 发布:迅雷看看mac版 编辑:程序博客网 时间:2024/05/16 06:36
把常用的字符串处理函数写了一遍,没有考虑地址重叠。
/**************************************************/char* mystrcpy( char *destin, const char *source ){ if( destin == NULL || source == NULL ) { return NULL; } char *addr = destin; while( ( *destin++ = *source++ ) != '\0' ); return addr;}/**************************************************/int mystrlen( const char *source ){ if( source == NULL ) { return 0; } int count = 0; while( *source++ != '\0' ) { count++; } return count;} /**************************************************/char* mystrncpy( char *destin,const char *source, int num ){ if( destin == NULL || source == NULL ) { return NULL; } int limit = mystrlen( source ); char *addr = destin; if( num > limit ) { return NULL; } else { while( num-- ){ *destin++ = *source++;} *destin = '\0';return addr; }}/**************************************************/char* mystrcat( char *destin, const char *source ) { if( destin == NULL || source == NULL ) { return NULL; } char *addr = destin; while( *destin++ != '\0' ); destin--; while( ( *destin++ = *source++ ) != '\0' ); return addr;}/**************************************************/char* mystrchr( char *source, char ch ){ if( source == NULL ) { return NULL; } while( *source != '\0' && ( *source++ != ch ) ); return *source == '\0' ? NULL:--source;}/**************************************************/int mystrcmp( const char *destin, const char *source ){ if( destin == NULL || source == NULL ) { return destin - source; } while( *destin && *source && ( *destin++ == *source++ ) ); return *( destin -1 ) != *( source -1 ) ? \ *( destin-1 ) - *( source-1 ) : *destin - *source;}/**************************************************/int mystrncmp( const char *destin, const char *source, int num ){ if( destin == NULL || source == NULL || num <= 0 ) { return destin - source; } while( num-- > 0 && *destin && *source && ( *destin++ == *source++ ) ); return *( destin-1 ) != *( source-1 ) || \ ( num == 0 && *destin && *source ) ? \ *( destin-1 ) - *( source-1 ) : *destin - *source; //考虑当进行最后一次比较时,如果字符串有一个为结束符,那么实际没有进行++}/**************************************************/char* mystrstr( const char *source, const char *destin ){ if( destin == NULL || source == NULL || \ *destin == '\0' || *source == '\0' ) { return NULL; } char *position = (char *)source; char *head = (char *)destin; while( *source ) { position = (char *)source; destin = head; while( *destin && *source && *destin++ == *source++ ); if( *destin == '\0' && *( destin-1 ) == *( source-1 ) ) { return position; } if( *source == '\0' ) { return NULL; } source = position + 1 ; }}
- 实现自己的mystring.h
- 实现MyString类(一)—类声明mystring.h
- MyString的实现
- MyString类的实现
- mystring类的实现
- mystring实现
- MyString实现
- MyString实现
- 最常考的笔试题: MyString实现
- 自定义字符串类MyString的C++实现
- C++ MyString类的简单实现
- string类的实现(mystring)
- assert.h原理以及自己的实现
- MyString类实现
- c++实现mystring
- C++ 实现mystring类型
- 模拟实现简单Mystring
- 模拟实现MyString
- 字符串专项:LA 3490
- 移动技术
- vc6.0画走势图、折线图、饼状图的准备工作
- Wine QQ 2012 ibus中文输入解决方案
- OCP-1Z0-051-V9.02-123题
- 实现自己的mystring.h
- J2SE学习笔记:J2SE重点难点,TreeSet比较器
- Linux新手入门:通过chmod改变文件权限
- TCP SOCKET recv的内存情况
- 漫谈大数据仓库与挖掘系统
- UVA - 11027 Palindromic Permutation
- MODPOST 0 modules的解决办法
- 2013-10-19第一次去招聘市场面试
- 多线程-线程间通信和等待唤醒