strstr函数 与strpbrk函数源码分析

strstr函数 与strpbrk函数源码分析

strstr函数,与strpbrk函数
两个函数在参数和返回值上几乎完全一样。
但是一个是全部匹配才算查找到,一个是只要出现一个字符即算查找到。

一、strstr函数

#include <stdio.h>
#include <string.h>
int StringSearch(const char* str, const char* strSearch)
{   //快速原型法和归纳法
    for (int i = 0; str[i] !='\0'; ++i)
    {
        int j = 0;
        for (; strSearch[j] != '\0';++j)
        {
            if (str[i+j]!= strSearch[j])
                break;

        }
     if (strSearch[j] == '\0')
           return i;
    }
    return -1;
}
int main()
{
    char str[] = "This is a simple string";
    puts(str);
    int n = StringSearch(str, "simple");
    if (n != -1)
        str[n + 1] = 'a';
    puts(str);
    return 0;
}

在这里插入图片描述

二、strpbrk函数

#include <stdio.h>
#include <string.h>
int StringMulti(const char* str, const char* strSearch)
{
    int i = -1;
    while (str[++i])
    {
        char c = str[i];
        int j = -1;
        while (strSearch[++j])
        {
            if (strSearch[j] == c)
                return i;
        }
    }
    return -1;
}
int main()
{
    char str[] = "This is a sample string";
    char key[] = "aeiou";
    printf("Vowels in '%s': ", str);
    int n  = StringMulti(str, key);
    int sum = 0;
    while (n != -1)
    {
        sum += n+1;
        printf("%c ", str[sum-1]);
        n = StringMulti(&str[sum], key);
    }
    printf("\n");
    return 0;
}

//int StringMulti(const char* str, const char* strSearch)
//{
//    int i = -1;
//    while (str[++i])
//    {
//        char c = str[i];
//        if (strchr(strSearch, c) != NULL)
//        {
//            return i;
//        }
//    }
//    return -1;
//}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jcrry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值