一、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; }
運行上面結果為:is a good boy!
二、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; }
Tags:
文章來源: