2013-02-23 75 views
-1

我需要搜索字符串形式的随机字符串列表以查找某个字符串。该函数将返回指向搜索列表中最后一个字符后面的字符的指针。在我的主函数中,我需要循环函数并返回随机列表中搜索字符串的出现次数。在字符串中搜索字符串C

这是我的功能。

char *findStringInData(char *data, char *string){ 
    int x, i; 
    int m = 0, n = 0; 
    char *follower; 
    char *temp; 
    for (x = 0; data[x] != '\0'; x++){ 
     if (data[x]== string[x]){ 
      temp = &data[x]; 
      //m++; 
     } 
      for(i = data[x]; string[i] != '\0'; i++){ 
      if (data[i] == string[i]) 
      follower = &temp[i]; 
      //n++; 
      //printf("the count is %d\n", n); 
     } 
    } 
    return follower; 

    return NULL; 
} 
+6

为什么不直接使用['的strstr(3)' ](http://www.manpagez.com/man/3/strstr/)? – 2013-02-23 19:59:19

+0

也许OP在一个没有标准库的嵌入式平台上。 – fuz 2013-02-23 22:25:45

+0

@FUZxxl,'strstr'的​​newlib实现是大约12行有意义的代码(即不是大括号或空白行)。如果OP没有标准库,他肯定可以毫无问题地使用这一功能。然而,看起来他*有一个标准库,因为他的程序调用了'printf',尽管它确实被注释掉了。 – 2013-02-24 18:16:44

回答

2

请不要重新实现标准库,它有strstr()为此目的。

根据您输入的数据,你要搜索的字符串,你也可以考虑字符串搜索的专业方法,如博耶 - 穆尔(见Boyer Moore Algorithm Implementation?

+0

我无法使用字符串库中的任何内容来搜索或比较。这是它给我的问题的全部原因。 – 2013-02-23 20:17:27

+0

@WillHumble,你可以从newlib或glibc中获得一个strstr实现,但是太麻烦了。你能更好地解释你到底想要完成什么吗? – 2013-02-24 18:17:49

+0

我有另一种方法,用随机字符填充字符串,然后搜索字符串方法查找该字符串中的某个字符串的出现。在我的主要我是循环搜索方法,并增加一个计数器每次searchString被发现。 – 2013-02-25 19:54:53