2012-08-27 44 views
0

字符串我在尋找最有效的方式在一個文本文件給我的話的集合中閱讀。閱讀在使用C

我寫的程序基本上是Scrabble。這將產生7個隨機字母(已經完成),然後用戶將需要輸入一個字任意數量的字母(如在拼字遊戲),並計劃將比分字(也已完成)。

我現在面臨的問題是如何閱讀文字。我們給了一個80字的文件,就像這個項目的通用「詞典」。我正在考慮使用fopen()函數或手動輸入單詞(這將吸引...)。我面臨着如何存儲這些單詞的另一個問題。我正在考慮一個二維數組,每列或每行都是一個單詞。有10,000個單詞的限制,它們不能超過6個字母。

關於如何做到這一點的任何提示將是偉大的。

+1

我只是將txt文件加載到一個字符串中,然後檢查這個字符串是否包含由字母組成的單詞。文件中的單詞應該由一個空格或課程 – jens108

+0

的逗號如何字的文件中列出的被分隔?看來你應該做一個谷歌搜索之前張貼在這裏... – Nashibukasan

+3

這應該被標記爲家庭作業? – Marvo

回答

3

將字讀入動態分配的字符串數組中。

  1. 打開文件(fopen())。
  2. 讀取文件(fgets())的每一行。把所有東西都做成單例(全部大寫,或全部小寫; <ctype.h>)。
  3. (如有必要)將文本分割成文字(<string.h>; strspn()strcspn()也許)。
  4. 對於每個單詞,分配足夠的內存並將其複製到該內存中(如果可用,則爲strdup();否則請自行編寫)。
  5. 將指針存儲到動態分配的指針數組中(malloc()realloc())。
  6. 最後關閉文件(fclose())。
  7. 對快速查找的字符串數組進行排序(qsort())。
  8. 使用二進制搜索來查找單詞(bsearch())。

如果你還沒有被教導指點一下,讓指針數組孤獨,那麼你仍然可以使用步驟1-3和6-8一字不差。你會預分配角色的二維數組,10000×7(因爲最大字長爲6),並保留多少在使用記錄(一個簡單的計數器)。確保任何字符串都不超過6個字符;確保總共不超過10,000個單詞。

您需要的qsort()bsearch()的比較功能在這種情況下稍有不同。

您可以放棄二進制搜索的效率並使用簡單的線性搜索。

+0

這些要求包含嚴格的限制。這些可能是爲了避免要求使用'malloc'。 –

+1

這是一種可能性;如果指針還沒有被教導,就會加倍。我不確定提問者是否知道沒有被教過指針。 –