2011-11-29 176 views
2

我剛開始學習C.我現在想要的是,我有兩個字符串,其中每個單詞由空格分隔,我必須返回匹配單詞的數量兩個字符串。那麼,C語言中是否有任何功能可以把每個單詞拿來與另一個單詞中的其他單詞進行比較,如果不是我可以如何做到的話。迭代C中的字符串,逐字

+5

您可以使用'strtok',但要注意,它實際上會修改字符串。 –

+0

我從來沒有遇到'strtok'的問題。這是它的目的。看到這個網站:http://www.cplusplus.com/reference/clibrary/cstring/strtok/ – djhaskin987

+0

或者,使用'isspace',記錄開始和結束,並複製它。 – Kevin

回答

1

分手在單詞的第一個字符串,這個你可以在任意數量的方式一切從通過字符數組在每個空間插入\0使用strtok循環做。

對於找到的每個單詞,使用strstr來檢查其他字符串,它檢查字符串是否存在。只需檢查strstr的返回值,如果!= NULL它找到它。

0

我不想用strtok,但堅持指針算術長度比較和memcmp來比較等長度的字符串。

0

有兩個問題在這裏:

1)分割每個字符串成字

strtok()功能可將一個字符串轉換成單詞。

這是一個有意義的練習,可以想象如何編寫自己的等效文件strtok

rosetta project顯示strtok和一個自定義方法來精確解決這個問題。

我自然會寫我自己的解析器,因爲它是一種吸引我的代碼。這對你來說可能是一個有趣的練習。

2)找到在一個字符串也是另一個

如果您遍歷每個單詞一個字符串在另一個每個單詞的那些話,它有O(n*n)複雜性。

如果您將一個字符串中的單詞編入索引,它將只需要O(n),這實際上更快(如果您的輸入足夠大,可以使其變得有趣)。值得一想的是,如何在一個字符串中構建一個hashtable這樣的單詞,以便您可以在另一個字符串中查找單詞。