模拟实现常用字符串函数
1、查找子字符串函数strstr的实现char * my_strstr(const char * dest, const char * src)//const保护字符串不被更改
{assert(dest);assert(src); //断言char * ptr1 = NULL;char * ptr2 = src;while (*dest){ptr1 = dest;//保留匹配成功后的位置指针src = ptr2;//保留匹配失败后,字串的同样指针while (*dest == *src){dest++; src++;if (*src == '\0')return ptr1;//匹配成功,返回首地址}dest++;}return NULL;//匹配失败
}
优点:程序简单易懂
缺点:查找的效率比较低2、模拟字符串复制函数strcpy的实现char * my_strcpy(char * dest, const char * src)
{assert(dest);assert(src);//断言const char *ret = dest;//保留目标字符串的头指针while (*src){*dest++ = *src++;//逐个复制}*dest = '\0';//将‘\0’复制return ret;//返回目标字符串的首地址
}
缺点:复制时遇到'\0'就结束,而不能复制一些包含'\0'较多的字符串。
例如:char arr[10] = {0,0,0,0,0};3、字符串长度计算函数strlen函数的3种实现1)使用计数器
int my_strlen_count(const char * str)//计数器实现字符串长度计算函数
{assert(str);//断言int count = 0;while (*str){count++;str++;}return count;//返回长度}2)利用指针相减
int my_strlen_ptr(const char * str)//利用指针相减实现字符串长度的计算
{assert(str);//断言const char * ret = str;while (*str++){;}return (str - ret - 1);//返回长度
}3)利用函数递归求取
int my_strlen_recu(const char * str)//利用递归计算字符串长度
{assert(str);//断言if (*str != '\0'){return (my_strlen_recu(str + 1) + 1);}elsereturn 0;
}4、字符串连接函数strcat的实现char * my_strcat(char * dest, const char * src)//字符串连接函数
{assert(dest);assert(src);//断言char *ret = dest;//保留目标字符串的头指针while (*dest){dest++;}//找到'\0';while (*dest++ = *src++)//将src连接到dest{;}return ret;//返回目标字符串的首地址
}5、字符串比较函数strcmp的实现int my_strcmp(const char *str1, const char *str2)//字符串比较函数
{assert(str1);assert(str2);//断言while (*str1 == *str2){str1++;str2++;if ('\0' == *str1){return 0;//相等}}return *str1 - *str2;//不等,返回不相等字符的ASCII码的差
}
转载于:https://blog.51cto.com/10788311/1718564
模拟实现常用字符串函数相关推荐
- 用c语言模拟实现常用字符串函数
目录 一.常用字符串函数介绍 1.strlen 2. strcpy 3.strcmp 4.strcat 5.strstr 二.模拟实现常用字符串函数 1.strlen 2.strcpy 3.strcm ...
- C语言常用字符串函数及模拟实现
字符串函数总结及模拟实现 1. 字符串函数总结
- SQL常用字符串函数
SQL常用字符串函数 一.字符转换函数 1.ASCII() 返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用''括起来,但含其它字符的字符串必须用''括起来使用 ...
- 字符串与字符串函数 - 字符串输出 常用字符串函数
一.字符串输出函数 1.puts() 函数 使用较为简单,只需要将字符串的地址作为参数进行传递即可. #include <sthio,h> #define DEF "I am a ...
- Matlab命令集--常用字符串函数
Matlab命令集--常用字符串函数 常用函数 eval :运行字符串表示的表达式 char :将数组变成字符串 double:将数字字符串变成数字 字符串操作 deblank :去掉字符串末尾的 ...
- php如果字符串有1 3 5,PHP常用字符串函数小结
PHP常用字符串函数小结 来源:程序员人生 发布时间:2015-01-22 09:02:32 阅读次数:1594次 1.判断类型的函数 is_bool() //判断是不是为布尔型 is_float ...
- C语言常用字符串函数
概括 代码 #include<stdlib.h> #include<stdio.h> #include<string.h> int main() {//常用字符串函 ...
- 写出python字符串三种常用的函数或方法_python中几种常用字符串函数
1.lower()把所有字符换成小写 2.upper()把所有字符换成大写 3.swapcase()大小写互换 4.title()把每个单词首字母大写,他是以所有英文字母的字符来区别是否为一个单词的, ...
- C语言常用字符串函数strlen、strcpy、strcat、strcmp、strchr
C语言常用字符串函数,求串长strlen(char *s).串复制strcpy(char *s1,char *s2).串连接strcat(char *s1,char *s2).串比较strcmp(ch ...
最新文章
- 委托、事件、事件访问器
- #029 博客换个主题从新开始
- 华人包揽CVPR 2019两篇最佳论文,李飞飞ImageNet十年后获奖
- 【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )
- [转]高效编程之欲擒故纵
- c++ vector 赋值_C++中vector用法
- 2019牛客暑期多校训练营(第七场)D Number(思维)
- volatile与synchronized的区别
- arm-2014.05 编译三星内核错误 “not support ARM mode ‘smc 0’ ”
- 前端学习(1107):函数进阶
- Spring事务管理详解_基本原理_事务管理方式
- scikit-learn学习笔记
- html能在hade中注释吗,A第1章 HTML超文本标记语言(1-20)OK.doc
- [C/C++] C++笔试常见问题
- 外网接口(浏览器接口)调取设备数据,放到数据库里
- 运放的噪声分析--你好放大器
- X波段多普勒天气雷达选址技术应用研究
- IBM称欧亚受Conficker病毒感染最严重
- 熊猫关键词工具v2.8.1.0绿色版SEO工具
- 北京朝阳数北机房简介
热门文章
- 2019 半导体领袖新年展望(一)| 半导体行业观察
- 10句“金玉良言”,助你面试成功!
- 为了写论文给 Linux “投毒”,导致整个大学都被 Linux 拉黑!
- 抽成 30% 的苹果税是良心价?谷歌也学“坏”了
- 程序员,是否应该有自己的职业规划?
- 程序员的求生欲有所强?用 Python 花式哄女友
- 几道题目理解JavaScript作用域、作用域链、预解析规则、表达式
- 学习Unix,可从事什么样的工作(1)《精通Unix下C语言与项目实践》读书笔记(3)...
- TCP端口状态说明ESTABLISHED、TIME_WAIT、 CLOSE_WAIT
- Linux下C语言之文件操作