如何用c实现单词拼写检查?

时间:2017-02-05 14:32:42

标签: c dictionary spell-checking

我需要在c中为我的评估创建拼写检查。我设法开始工作 - 我有文本文件,其中包含所有字典,我编码如何读取文件,如何将所选文件与字典文件进行比较,现在我需要打印到新文本文件,其中拼写错误的单词发现,它们是什么,以及它们的正确版本。最大的问题是,我不知道该怎么做。我的代码现在可以说文件之间存在差异。但是我不知道strcmp如何通过字符串,逐字逐句检查字符串,如果出错了。

在字典文件中是所有单词,所以当然,如果我的程序正在读取其他文件,则比较,然后将所有不在文件中的单词写入有错误的新输出文件,这些输出错误单词也将只是随机单词,它们甚至不在文本文件中,或与文本文件连接。

我希望我能很好地解释我的问题,并且有人会告诉我如何解决这个问题。我甚至没有要求代码,我只是想知道如何编写程序的其余部分。对不起,对于我的英语,这是我的第二语言,所以我仍然犯了语法错误。

1 个答案:

答案 0 :(得分:3)

以下是您可以遵循的一些步骤:

  • 将字典读入内存结构,例如字符串数组,您将按字典顺序排序(使用strcmp)。

  • 逐行读取文件,并为每一行迭代这些步骤:

    • 使用空格初始化高亮线,长度与读取的行相同。

    • 使用strcspn()跳过不能成为单词一部分的字符,保存索引i

    • 使用strspn()扫描可以成为单词一部分的字符,保存此号码n
    • 如果n为0,则为行尾
    • 在字典i中查找带有n字符的单词(可能会忽略大小写)
    • 如果找不到单词,请使用^字符在警告行中设置相应的字符。
    • 更新索引i += n并迭代。
  • 如果在该行中找不到至少一个单词,则输出该行和警告行。

研究这些标准功能:

  • strspn()
  • strcspn()
  • qsort()
  • bsearch()