c语言 定义一个函数,判断某字符串中是否包含一个子串

2024年11月23日 04:14
有2个网友回答
网友(1):

int find(char* source, char* target)//source为源字符串,target为子字符串,如找到则返回在源串中的位置,如未找到则返回-1,如果要改为找到返回1,把return i改为return 1;
{
    int i,j;
    int s_len=strlen(source);
    int t_len=strlen(target);
    if(t_len>s_len)
    {
        return -1;
    }
    for(i=0;i<=s_len-t_len;i++)
    {
        j=0;
        int flag=1;
        if(source[i]==target[j])
        {
            int k,p=i;
            for(k=0;k            {
                if(source[p]==target[j])
                {
                    p++;
                    j++;
                    continue;
                }
                else
                {
                    flag=0;
                    break;
                }
            }
        }
        else
        {
            continue;
        }
        if(flag==1)
        {
            return i;
        }
    }
    return -1;
}

网友(2):

其实就是C 库函数strstr

char *strstr(const char *s1, const char *s2)
{
    size_t l1, l2; 

    l2 = strlen(s2);
    if (!l2)
        return (char *)s1;
    l1 = strlen(s1);
    while (l1 >= l2) 
   {
        l1--;
        if (!memcmp(s1, s2, l2))
            return (char *)s1;
        s1++;
    }
    return NULL;
}