查找字符/字符串的函数

strstr(在一字符串中查找指定的字符串) 

char *strstr( const char *s1, const char *s2 );

strstr()会从字符串s1中搜寻字符串s2,并将第一次出现的地址返回。返回指定字符串第一次出现的地址,否则返回NULL(如果s1或者s2为空,在vc中编译没有问题,当时运行时会出现异常)

#include<stdio.h>

#include<string.h>

 

//标准库中不存在strrstr函数,下面是一个自己编写的查找字符串s1中最后一次出现的字符串s2的位置的函数

char * my_strrstr( char const * s1, char const * s2 )

{

       char *last;

       char *current;

 

       //把指针初始化为我们已经找到的前一次匹配位置

       last = NULL;

 

       //只有在两个字符串都不为空时才进行查找,如果其中一个为空,返回NULL

       if( s1 != NULL && s2 != NULL )

       {

              //查找s2s1中第一次出现的位置

              current = strstr( s1, s2 );

 

              //我们每次找到字符串时,让指针指向它的起始位置,然后查找该字符串下一个匹配位置

              while( current != NULL )

              {

                     last = current;

                     current = strstr( last + 1, s2 );

              }

       }

 

       return last;

}

 

int main()

{

    char *str1="this is a example,example,example";

    char *str2="example";

    printf( "my_strrstr( str1, str2 )的返回结果为:%s/n", my_strrstr( str1, str2 ) );

 

    getchar();

       return 0;

}

 

 

 

strchr(查找字符串中第一个出现的指定字符) 

char *strchr( const char *s, int c );

strchr()用来找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。如果找到指定的字符则返回该字符所在地址,否则返回NULL

 

strrchr(查找字符串中最后出现的指定字符) 

char *strrchr( const char *s, int c );

strrchr()用来找出参数s字符串中最后一个出现的参数c地址,然后将该字符出现的地址返回。如果找到指定的字符则返回该字符所在地址,否则返回NULL

 

memchr(在某一内存范围中查找一特定字符) 

void *memchr( const void *s, int c, size_t n );

memchr()从头开始搜寻s所指的内存内容前n个字节,直到发现第一个值为c的字节,则返回指向该字节的指针。如果找到指定的字节则返回该字节的指针,否则返回NULL

 

#include<stdio.h>

#include<string.h>

int main()

{

    char *s = "0123456789012345678901234567890";

    char *p;

   

    p = strchr(s,'9');

    printf(" strchr(): %s/n",p);

   

    p = strrchr(s,'9');

    printf("strrchr(): %s/n",p);   

   

    p = strstr(s,"901");

    printf(" strstr(): %s/n",p);  

   

    p = (char *)memchr( s, '9', 10 );

    printf(" memchr(): %s/n",p);   

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值