C语言字符串查找基础----strchr()、strrchr()、strpbrk()、strstr()

本文介绍了三种在C语言中搜索字符串的方法:使用strchr和strrchr查找单个字符、使用strpbrk查找任意一组字符、使用strstr查找子串。文章通过实例详细说明了这些函数的应用场景及注意事项。

1、查找一个字符
在一个字符串查找一个特定字符最容易的方法是使用strchr和strrchr函数,原型如下所示:

char *strchr(char const *str, int ch);
char *strrchr(char const *str,int ch);

注意:它们的第二个参数是一个整型值。但是,它包含了一个字符值。strchr返回字符第一次出现的位置,strrchr返回字符最后一次出现的位置。找到后函数返回指向该位置的指针,否则返回NULL。

char string[20] = "hello world";
char *ans;
ans = strchr(string,'w');

ans所指向的位置将是string+6。注意这里大小写是有区别的。

2、查找任何几个字符
strpbrk查找任何一组字符第一次在字符串中出现的位置,函数原型如下:

char *strpbrk(char const *str, char const *group);

这个函数返回一个指向str中第1个匹配group中任何一个字符的字符位置,如果未找到就返回NULL指针。

char string[20] = "hello world";
char *ans;
ans = strpbrk(string,'aeiou');

ans指向的位置是string+1,因为这个位置是第2个参数中的字符第一次出现的位置。这个函数也区分大小写。

3、查找一个子串
在一个字符串查找一个子串,可以使用strstr函数,原型如下:

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

这个函数在s1中查找整个s2第一次出现的起始位置,并返回一个指向该位置的指针。如果s2并没有完整地出现在s1的任何地方,返回NULL指针。如果第2个参数是一个空字符串,函数就返回s1。

注意:标准库中并不存在strrstr或者strrpbrk,但是其很容易实现。下面程序实现strrstr函数。相同的技巧可用于实现strrpbrk。


#include<string.h>

char *my_strrstr(char const *s1,char const *s2)
{
    register char *last;
    register char *current;;

    last = NULL;
    /*第2个参数不为空才查找*/
    if(*s2 != '\0')
    {
        current  = strstr(s1,s2);
    /*每次找到字符串时,让指针指向它的起始位置,然后查找该字符串下一个匹配位置*/
        while(current != NULL)
        {
            last = current;
            current = strstr(last+1,s2);
        }
    }
    return last;
}
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值