<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; } else str1=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
<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!!!继续变强。