使用C中的strstr搜索主字符串中的多个字符串

时间:2013-12-19 14:57:13

标签: c search strstr

目前,strstr函数返回找到的字符串的起始位置;但我想搜索多个字符串,它应该返回找到的字符串的位置,否则返回NULL。任何人都可以帮助我做到这一点吗?

2 个答案:

答案 0 :(得分:8)

存储答案,然后再次致电strstr(),从返回的位置+搜索字符串的长度开始。继续,直到它返回NULL

答案 1 :(得分:1)

E.g

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *strpbrkEx(const char *str, const char **strs){
    char *minp=(char*)-1, *p;
    int len, lenmin;
    if(NULL==str || NULL==strs)return NULL;
    while(*strs){
        p=strstr(str, *strs++);
        if(p && minp > p)
            minp = p;
    }
    if(minp == (char*)-1) return NULL;
    return minp;
}

int main(){
    const char *words[] = {"me","string","location", NULL};
    const char *others[] = {"if","void","end", NULL};

    const char data[]="it should return me the location of the found string otherwise return NULL.";
    char *p;
    p = strpbrkEx(data, words);
    if(p)
        printf("%s\n",p);
    else
        printf("(NULL)\n");

    p = strpbrkEx(data, others);
    if(p)
        printf("%s\n",p);
    else
        printf("<NULL>\n");
    return 0;
}