在C中读取字符串

时间:2012-08-27 01:28:59

标签: c string

我正在寻找一种最有效的方式来阅读文本文件中给我的一系列单词。

我写的程序基本上是拼字游戏。它将生成7个随机字母(已经完成)然后用户将需要输入任意数量的这些字母中的单词(如拼字游戏),程序将对该单词进行评分(也已完成)。

我现在面临的问题是如何阅读。我们给出了一个80字的文件,就像这个项目的通用“字典”。我正在考虑使用fopen()函数或手动输入单词(这会很糟糕......)。我正面临着另一个如何存储单词的问题。我在考虑一个2d数组,其中每列或每行都是一个单词。最多10,000个单词,长度不超过6个字母。

关于如何做到这一点的任何提示都会很棒。

1 个答案:

答案 0 :(得分:3)

将单词读入动态分配的字符串数组中。

  1. 打开文件(fopen())。
  2. 阅读文件的每一行(fgets())。将所有内容设为单个案例(全部为大写,或全部为小写; <ctype.h>)。
  3. (如有必要)将该行拆分为单词(<string.h>; strspn()strcspn()或许)。
  4. 对于每个单词,分配足够的内存并将其复制到该内存中(strdup()如果可用;否则请自行编写。)
  5. 将指针存储在动态分配的指针数组(malloc()realloc())中。
  6. 最后关闭文件(fclose())。
  7. 对字符串数组进行排序以便快速查找(qsort())。
  8. 使用二进制搜索查找单词(bsearch())。

  9. 如果你没有被教过指针,更不用说指针数组,那么你仍然可以逐字地使用步骤1-3和6-8。您需要预先分配一个2D字符数组,10,000 x 7(因为最大字长为6),并记录正在使用的字符数(一个简单的计数器)。确保所有字符串都不超过6个字符;确保总共不超过10,000个单词。

    qsort()bsearch()所需的比较功能在这种情况下略有不同。

    您可以放弃二分搜索的效率并使用简单的线性搜索。