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