2013-02-23 72 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