2011-04-05 91 views
0

我得到了一個問題,我還沒有解決。 我的程序需要這樣的工作:一個字符串問題

Put some string: Hello World Hello World World World 
output: 4 

程序得到的字符串和子字符串,該子字符串需要在字符串中被發現和計算字符串中最常見的子字符串。

我寫了一些代碼,但沒有成功..

int main() 
{ 
    char string[10]; 
    int i=0,x=0; 
    char find[] = "hello"; 
    gets(string); 
    while(string[i] != 0) 
     if(string[i] == find[i])) 
      x++; 
      printf("%d", x); 
    i++; 
    return 0; 
} 
+0

你見過函數strstr嗎? – 2011-04-05 18:25:56

+2

我在想這應該有'家庭作業'標籤 – 2011-04-05 18:26:05

+0

你應該使用fgets來代替gets,這樣你就可以指定緩衝區的長度。 – jonsca 2011-04-05 18:28:18

回答

0

我想你會更好使用字符串庫調用像

的char *的strstr(爲const char * S1,爲const char * s2) 這會返回一個指向s1中字符串s2的第一個實例的指針。如果在s1中沒有遇到s2,則返回一個NULL指針。

你可以在這裏找到它們的列表: http://www.edcc.edu/faculty/paul.bladek/c_string_functions.htm

0

你可以看一下第二個答案this question,基本上指出,最常見的子字符串將是一個字符串,你的情況'O'。這聽起來像你可能需要單詞而不是字符串,在這種情況下,只需將字符串分解成單詞和數字即可。

0

斐伊川,

嘗試這樣

1)取1串,1個字符串數組和一個計數陣列

2)第一次掃描的字符串。由於緩衝區溢出問題,您必須使用fgets,因爲get不安全,甚至LINUX/UNIX文檔建議避免它。

3)將字符串分解爲單詞並將每個唯一單詞存儲在字符串數組中。

4)現在從字符串數組中取一個單詞並將其與字符串進行比較並計算出現次數。你最好使用一些LIB功能類似的strstr

5)然後結束掃描計數陣列的最大數量,這將給你最大數和相應的字計數陣列

6)在相應的計商店。