当前位置: 首页 > article >正文

字符串函数---strstr()、memchr()、strchr()详解及实现

原文出处:http://blog.csdn.net/lanzhihui_10086/article/details/39831935

一、strstr()函数:

    strstr():搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL。

    格式:strstr(str1,str2);

     str1: 被查找目标

     str2: 要查找对象

 

实现代码:

[cpp]  view plain copy
  1. #include<iostream>  
  2. #include<assert.h>  
  3.   
  4. using namespace std;  
  5.   
  6.   
  7. char *strstr_m(const char *str1,const char *str2)  
  8. {  
  9.     const char *cp=NULL;  
  10.     const char *c=str2;  
  11.     bool falg=false;  
  12.   
  13.     if(*str2=='\0'return (char*)str1;//当第二个参数为空时,返回str1的首地址  
  14.       
  15.     while(*str1!='\0')  
  16.     {  
  17.         while(*str1==*str2)  
  18.         {  
  19.             if(!falg)  
  20.             {  
  21.                 falg=true;  
  22.                 cp=str1;  
  23.             }  
  24.             str1++;  
  25.             str2++;  
  26.             if(*str2=='\0')  
  27.                 return (char*)cp;  
  28.         }  
  29.         str1++;  
  30.         cp=NULL;  
  31.         falg=false;  
  32.         str2=c;  
  33.     }  
  34.     return (char*)cp;  
  35. }  
  36.   
  37. int main()  
  38. {  
  39.     char a[]="lanzhihui is a good boy!";  
  40.   
  41.     char *s=strstr_m(a,"is");//注意:当第二个实参为  ""  时,s指向a数组的首地址  
  42.   
  43.     if(s!=NULL)  
  44.     {  
  45.         cout<<s<<endl;  
  46.     }  
  47.     else  
  48.     {  
  49.         cout<<"Not Find!"<<endl;  
  50.     }  
  51.   
  52.     system("pause");  
  53.     return 0;  
  54. }  

运行上面结果为:is a good boy!

 

二、memchr()函数

    memchr():  void *memchr( const void *buffer, int ch, size_t count );

    函数在buffer指向的数组的count个字符的字符串里查找ch 首次出现的位置。返回一个指针,指向ch 在字符串中首次出现的位置, 如果ch 没有在字符串中找到,返回NULL。

 

实现代码:

[cpp]  view plain copy
  1. #include<iostream>  
  2. #include<assert.h>  
  3.   
  4. using namespace std;  
  5.   
  6. void *memchr_m(const void *buffer,int ch,int n)  
  7. {  
  8.     assert(buffer!=NULL);  
  9.   
  10.     char *cp=(char*)buffer;  
  11.   
  12.     while(*cp++!='\0'&&n)  
  13.     {  
  14.         if(*cp-ch==0)  
  15.             return (void*)cp;  
  16.         --n;  
  17.     }  
  18.     return NULL;  
  19. }  
  20.   
  21. int main()  
  22. {  
  23.     char a[]="lanzhihui is a good boy!";  
  24.   
  25.     char *p;  
  26.     p=(char*)memchr_m(a,'z',50);  
  27.   
  28.     if(p!=NULL)  
  29.     {  
  30.         cout<<"Find!"<<endl;  
  31.         cout<<p<<endl;  
  32.     }  
  33.     else  
  34.     {  
  35.         cout<<"Not Find!"<<endl;  
  36.     }  
  37.   
  38.     system("pause");  
  39.     return 0;  
  40. }  

 

 

三、strchr()函数

    strchr():char *strchr(const char *s,char c);
    功能:查找字符串s中首次出现字符c的位置
    返回值:成功则返回要查找字符第一次出现的位置,失败返回NULL。

 

实现代码:

[cpp]  view plain copy
  1. #include<iostream>  
  2. #include<assert.h>  
  3.   
  4. using namespace std;  
  5.   
  6. char *strchr_m(const char *s,int ch)  
  7. {  
  8.     assert(s!=NULL);  
  9.   
  10.     while(*s!='\0')  
  11.     {  
  12.         if(*s-ch==0)  
  13.             return (char*)s;  
  14.         s++;  
  15.     }  
  16.     return NULL;  
  17. }  
  18.   
  19. int main()  
  20. {  
  21.     char a[]="lanzhihui is a good boy!";  
  22.   
  23.     char *p;  
  24.   
  25.     p=strchr_m(a,'l');  
  26.   
  27.     if(p!=NULL)  
  28.     {  
  29.         cout<<"Find!"<<endl;  
  30.         cout<<p<<endl;  
  31.     }  
  32.   
  33.     else  
  34.     {  
  35.         cout<<"Not Find!"<<endl;  
  36.     }  
  37.   
  38.     system("pause");  
  39.     return 0;  
  40. }  
http://www.lryc.cn/news/2415106.html

相关文章:

  • 【数据结构】树(一)—— 树的基础知识(C语言版)
  • CDSN文章转载方法
  • Git从入门到熟练第十讲 cloning
  • Mac安装brew,支持m芯片,5分钟安装成功亲测有效
  • 浅谈网络共享之samba服务
  • CSS预处理语言~~Less安装与使用
  • Java的byte类型详解
  • ICMP协议与ARP协议
  • unity基础(2)——3D对象基础概念与简单操作
  • 发现数学之美--微积分的起源和用途(一文搞懂微积分)
  • QEMU简介
  • 基于微信PC端小程序抓包方法
  • Hex文件解析
  • 超详细一文到底!软件测试基本流程
  • 富文本编辑器汇总
  • 一篇了解使用springSecurity
  • jar包的概念及作用(二)运行jar包、查看jar包内容
  • 推荐开源项目:NSFW Filter — 图片安全性智能检测库
  • 【机器学习】SGD,SGDM,NAG,Adagard,AdaDelta,RMSpro,Adam原理
  • 【Python/绘图】python绘图
  • [计算机效率] 文件搜索工具:Listary(附详细使用教程)
  • IO的详细介绍
  • CPP/C++学习笔记01
  • Evaluation中Percision和Recall的理解
  • Animation 开源项目教程
  • SonarQube代码质量检查平台
  • 深入理解异或运算 xor 的含义——再探不使用加减乘除实现加法运算、不使用额外空间交换两个变量的值
  • 面试官灵魂三问:什么是SOA?什么是微服务?SOA和微服务有什么区别?
  • Dev-C++/Cpp使用入门详解
  • Angular简介(大神可略过)