那些有趣的字符串操作函数(2)
来源:互联网 发布:淘宝上怎么搜联通黑卡 编辑:程序博客网 时间:2024/05/17 19:58
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">不知不觉,字符串操作函数已经学习完了;</span>
今天就给总结几个比较少见但还是很重要的字符串操作函数:
话不多说直接进入正题:
1.模拟实现strchr:
含义:返回一个字符串中某个字符第一次出现的地址,并输出此字符及其后面的字符串;
程序代码:
<strong>#include <stdio.h>#include<string.h>#include<assert.h>char *mystrchr(char const *s,int c) { char *p=(char*)s; assert(s); while(*p && *p!=c) { p++; } if(*p==c) { return p; } return NULL; } int main(){ char str[20] = "hello wrold!"; char c='l'; char *p = mystrchr(str,c); printf("%s\n",p); return 0; } </strong>
2.模拟实现strrchr
含义:返回一个字符串中某个字符最后一次出现的地址,并输出此字符及其后面的字符串;
程序代码:
<span style="font-size:24px;"><strong>#include <stdio.h>#include<string.h>#include<assert.h>char *mystrchr(char const *s,int c) { char *p=NULL; char *p1=s; assert(s); while(*p1) { if(*p1==c) { p=p1;//建立一个新的指针p记录他每次出现的地址; }p1++; } return p; return NULL; } int main(){ char str[20] = "hello wrold!"; char c='l'; char *p = mystrchr(str,c); printf("%s\n",p); return 0; } </strong></span>3.strstr
格式:char* my_strstr(const char* s1,const char *s2)
含义:查找字符串s2是否为字符串s1的字串;如果是,函数返回在字符串s1中 第一次出现的s2 的首字符 在s1中的位置;
程序代码:
#include<stdio.h>#include<string.h>#include<assert.h>char* my_strstr(const char* s1,const char *s2){const char* str1=s1;const char* str2=s2;const char* str3=NULL;assert(s1);assert(s2);while(*str1){ str3=str1;while((*str1==*str2) && *str1 && *str2){str1++;str2++;}if(*str2=='\0'){return (char*)str3;}elsestr1=str3+1; str2=s2;}return NULL;}int main(){char *p1="abcderdleldefd";char *p2="def";char *p3=my_strstr(p1,p2);printf("%s",p3);return 0;}4.strrstr
含义:查找字符串s2是否为字符串s1的字串;如果是,函数返回在字符串s1中 最后一次出现的s2 的首字符 在s1中的位置;
程序代码:
<strong>#include<stdio.h>#include<string.h>#include<assert.h>char* my_strstr(const char* s1,const char *s2){const char* str1=s1;const char* str2=s2;const char* str3=NULL;const char* str4=NULL;assert(s1);assert(s2);while(*str1){ str3=str1;//记录下一次源字符串的比较的起始位置while((*str1==*str2) && *str1 && *str2){str1++;str2++;}if(*str2=='\0'){str4=str3; }str1=str3+1;//源字符串向后移动一个位置; str2=s2;//目标字符串回到开头位置;}if(*str1=='\0'){return (char*)str4;}return NULL;}int main(){char *p1="aaadeffffdefcccc";char *p2="def";char *p3=my_strstr(p1,p2);printf("%s",p3); return 0;}</strong>ok!!!继续变强。
0 0
- 那些有趣的字符串操作函数(2)
- Hive中那些有趣的字符串函数
- 字符串操作的那些事情
- 5.那些队列,那些队列操作函数(2)
- 说说 JavaScript 中那些有趣而且强大的高级函数
- AutoHotKey的那些事儿:(三)、AutoHotkey的字符串操作
- 那些有趣的人和事
- stackoverflow那些有趣的badges
- 操作字符串的函数
- 字符串操作的函数
- 字符串的操作函数
- 字符串的操作函数
- Linux下那些有趣的命令(好有爱啊^_^)
- 有趣的字符串
- 有趣的字符串常量
- 5.那些队列,那些队列操作函数(1)
- 有趣的python range()函数
- 有趣的python range()函数
- hrbust/哈理工oj 1495 Robots on a grid【BFS+BFS+dp】
- [Java]一个TCP文本上传相关的异常处理和偶然引出的中文编码问题
- 树莓派启用看门狗watchdog
- ACM--模拟--湘大OJ 1142--Collatz Conjecture
- extend和append区别
- 那些有趣的字符串操作函数(2)
- Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法
- NSString和NSNumber的相互转化
- 【工具】持续集成工具——Jenkins
- 驱动应该怎么学
- mysql-5.7.12-winx64配置和修改root密码的方法
- mysql5中大数据错误:Packet for query is too large (***>***). You can change this value on the ser
- 进制转换
- python生成随机数方法小结