*strstr.c - search for one string inside another *Purpose: * defines strstr() - search for one string inside another *******************************************************************************/ #include #include *char *strstr(string1, string2) - search for string2 in string1 *Purpose: * finds the first occurrence of string2 in string1 *Entry: * char *string1 - string to search in * char *string2 - string to search for *Exit: * returns a pointer to the first occurrence of string2 in * string1, or NULL if string2 does not occur in string1 *Uses: *Exceptions: *******************************************************************************/ char * __cdecl strstr ( const char * str1, const char * str2 char *cp = (char *) str1; char *s1, *s2; if ( !*str2 ) return((char *)str1); while (*cp) s1 = cp; s2 = (char *) str2; while ( *s1 && *s2 && !(*s1-*s2) ) s1++, s2++; if (!*s2) return(cp); cp++; return(NULL);

效率非常高的库函数,我们稍作修改即可。

char * __cdecl stristr (
                       const char * str1,
                       const char * str2
    char *cp = (char *) str1;
    char *s1, *s2;
    if ( !*str2 )
        return((char *)str1);
    while (*cp)
        s1 = cp;
        s2 = (char *) str2;
        while ( *s1 && *s2 && toupper(*s1)==toupper(*s2) ){
            s1++, s2++;
        if (!*s2)
            return(cp);
        cp++;
    return(NULL);

这样实现了strstr忽略大小写匹配

参考:https://www.itdaan.com/blog/2017/11/23/8a000aa1d66b8537f4d23718fb00f9a4.html

Linux下没有现成的 不区分大小写strstr函数,但是有 strncasecmp 函数,用于不区分大小写的字符串比较,利用它,我们可以很简单地实现不区分大小写strstr函数 strncasecmp 函数原型: int strncasecmp(const char *s1, const char *s2, size_t n); strncasecmp 比较 s1 和 s2 [Submit][Status][Web Board] Description fjxmlhx hates marshtomp, so he wants to ignore the “marshtomp” in every sentences. In order to making th... strstr()函数的原型定义在strstr()函数是C语言标准库中一个重要的字符串处理函数,用于查找子字符串在主字符串中的第一次出现。通过理解其定义、用法和实现,我们可以在各种字符串处理任务中有效地使用它。尽管strstr()函数在处理小规模字符串时性能表现良好,但在大规模文本处理任务中,可以考虑使用更高效的算法或第三方库。希望通过本文的讲解,读者能对C语言中的strstr()函数有一个全面深入的了解,并能在实际编程中灵活应用这些知识。如果你有任何问题或建议,欢迎在下方留言与我交流。 char* CP_stristr(const char *pcString1, const char *pcString2) char *pCompareStart = (char *)pcString1; char *pCursor_S1, *pCu strstr 区别大小写,从字符开始找如果有返回true否则就返回false  stristr 字符不区别大小写,从字符开始找如果有返回true否则就返回false strpos 区别大小写strpos查找成功后则是返回的是位置。因为位置有可能是0,所以判断查找失败使用===false更合适。 if(strstr($HTTP_SERVER_VARS[HTTP_USER_AGENT], "Mo /用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;//windows环境下字符串必须定义为数组型,否则报错。//查找字符串,在一个串中查找给定字符的第一个匹配之处。puts("未找到该字符");puts("找到了该字符");puts("未找到该字符");puts("找到了该字符");         在C语言中(‍string.h)定义了用于进行忽略大小写的字符串比较的函数strcasecmp及strncasecmp,以及用于子串查找的函数strstr,不过很遗憾的是,C及C++中并未定义strstr的“忽略大小写版本”。         以下是strstr的一种实现形式(注意,当s2是一个空串时