模拟实现strchr,strrchr,strstr,strrstr函数
来源:互联网 发布:小清新记账软件 编辑:程序博客网 时间:2024/05/22 13:41
模拟实现strchr,strnchr,strstr,strrstr函数
strchr
查找字符串s中首次出现字符c的位置,返回首次出现c的位置的指针,如果s中不存在c则返回NULL
#include<stdio.h>#include<string.h>#include<iostream>#include<assert.h>char *Is_strchr(char *str, char a){assert(str != NULL);while (*str){if (*str == a){return str;}else*str++;}return NULL;}int main(){char arr[20] = "abcdedef";char b = 'c';char *ret;ret = Is_strchr(arr, b);printf("%s\n",ret);system("pause");return 0;}
strrchr
strrchr() 函数查找字符在指定字符串中从后面开始的第一次出现的位置,如果成功,则返回从该位置到字符串结尾的所有字符,如果失败,则返回NULL
#include<stdio.h>#include<string.h>#include<iostream>#include<assert.h>char *Is_strrchr(char *str, char a){assert(str != NULL);char *p = str;while (*p){*p++;}while (*p != *(str-1)){if (*p == a){return p;}else*p--;}return NULL;}int main(){char arr[20] = "abcdecdef";char b = 'c';char *ret;ret = Is_strrchr(arr, b);printf("%s\n",ret);system("pause");return 0;}
大家可以看出两者的区别。
strstr
strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 NULL。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>char *My_strstr(char *dst,char *str){assert(str != NULL);assert(dst != NULL);char *s = dst; char *q = str;char *p = s;while (*p){p = s; q = str;while ((*p != '\0') && (*q != '\0')){if (*p++ == *q++){;}else{s++; break;}}if (*q == '\0'){ return s; }}return NULL;}int main(){char *s1 = "Hello world!";char *s2 = "el";char *ret =My_strstr(s1, s2);if (ret == NULL){printf("sorry,Do not find!\n");}printf("%s\n", ret);system("pause");return 0;}
运行结果如下:
strrstr
strrstr() 函数搜索一个字符串在另一个字符串中最后一次出现。和strstr相似,该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 NULL。
可以将第一次出现的地方找到,继续找,将地址改成下次出现的地址。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>char *My_strrstr(char *str1, char *str2){assert(str1&&str2);char *last = NULL;char *start = str1;int j = 0;while (*str1&&*str2){start = str1;while (*str1&&*(str2 + j) && *str1 == *(str2 + j)){str1++;j++;}if (*(str2 + j) == '\0'){last = start; //将上次找到的地址修改成本次的地址}str1 = start + 1;j = 0;}if (*str1 == '\0')return last;elsereturn NULL;}int main(){char *s1 = "abcdeabcde";char *s2 = "abc";char *ret = My_strrstr(s1, s2);if (ret == NULL){printf("sorry,Do not find!\n");}printf("%s\n", ret);system("pause");return 0;}
运行结果如下:
阅读全文
0 0
- 模拟实现strchr,strrchr,strstr,strrstr函数
- 【C语言】模拟实现strchr,strrchr,strrstr.
- 字符串函数strchr 、 strrchr 、strrstr的实现
- 有趣的字符查找函数模拟strstr和strrstr,strchr和strrchr
- 有意思的字符串查找函数strchr,strrchr,strstr,strrstr
- 模拟实现strstr、strrstr
- 模拟实现strrchr,strchr
- 模拟实现strchr.strrchr
- 模拟实现strchr、strrchr
- 模拟strstr函数strrstr函数
- 模拟实现strchr和strrchr
- 【C语言】模拟实现strncpy strncat strncmp strchr strrchr函数
- 模拟实现 strncpy strncat strncmp strchr strrchr 函数
- strchr、strrchr、memchr函数详解及模拟实现
- strchr strrchr strstr
- strchr(),strstr()函数实现
- 字符串函数strchr,strrchr,strrstr,strncat()函数,strncpy()函数 ,strncmp()函数 ,
- strchr()函数与strrchr()函数的实现
- Java转义字符对照表
- Navicat Premium 连接远程Oracle 数据库12541错误
- Unity狙击枪的视野放大和缩小
- POJ 2823 Sliding Window(单调队列)
- Educational Codeforces Round 23 E. Choosing The Commander (字典树)
- 模拟实现strchr,strrchr,strstr,strrstr函数
- 微信小程序之toast等弹框提示
- Linux学习第二十二篇--变量
- Xamarin XAML语言教程基本视图ContentViewg构架范围框架
- sum求和
- C++builder利用GetPrivateProfileString读取配置文件
- 开源框架(TP,CI,Laravel,Yii)
- Static 关键字说明
- python类继承,方法覆写,运算符重载