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

How to implement word spell checking with c?

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

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

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

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

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

  • 逐行读取文件,并对每一行重复以下步骤:

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

    • 跳过不能与strcspn()组成单词的字符,保存索引i.

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

研究这些标准函数:

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