一、strstr()函数:
strstr():搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL。
格式:strstr(str1,str2);
str1: 被查找目标str2: 要查找对象
实现代码:
#include<iostream> #include<assert.h> using namespace std; char *strstr_m(const char *str1,const char *str2) { const char *cp=NULL; const char *c=str2; bool falg=false; if(*str2=='\0') return (char*)str1;//当第二个参数为空时,返回str1的首地址 while(*str1!='\0') { while(*str1==*str2) { if(!falg) { falg=true; cp=str1; } str1++; str2++; if(*str2=='\0') return (char*)cp; } str1++; cp=NULL; falg=false; str2=c; } return (char*)cp; } int main() { char a[]="lanzhihui is a good boy!"; char *s=strstr_m(a,"is");//注意:当第二个实参为 "" 时,s指向a数组的首地址 if(s!=NULL) { cout<<s<<endl; } else { cout<<"Not Find!"<<endl; } system("pause"); return 0; }
二、memchr()函数
memchr(): void *memchr( const void *buffer, int ch, size_t count );
函数在buffer指向的数组的count个字符的字符串里查找ch 首次出现的位置。返回一个指针,指向ch 在字符串中首次出现的位置, 如果ch 没有在字符串中找到,返回NULL。
实现代码:
#include<iostream> #include<assert.h> using namespace std; void *memchr_m(const void *buffer,int ch,int n) { assert(buffer!=NULL); char *cp=(char*)buffer; while(*cp++!='\0'&&n) { if(*cp-ch==0) return (void*)cp; --n; } return NULL; } int main() { char a[]="lanzhihui is a good boy!"; char *p; p=(char*)memchr_m(a,'z',50); if(p!=NULL) { cout<<"Find!"<<endl; cout<<p<<endl; } else { cout<<"Not Find!"<<endl; } system("pause"); return 0; }
三、strchr()函数
strchr():char *strchr(const char *s,char c);
功能:查找字符串s中首次出现字符c的位置
返回值:成功则返回要查找字符第一次出现的位置,失败返回NULL。
实现代码:
#include<iostream> #include<assert.h> using namespace std; char *strchr_m(const char *s,int ch) { assert(s!=NULL); while(*s!='\0') { if(*s-ch==0) return (char*)s; s++; } return NULL; } int main() { char a[]="lanzhihui is a good boy!"; char *p; p=strchr_m(a,'l'); if(p!=NULL) { cout<<"Find!"<<endl; cout<<p<<endl; } else { cout<<"Not Find!"<<endl; } system("pause"); return 0; }