【问题标题】:How to implement word spell checking with c? [closed]如何用c实现单词拼写检查? [关闭]
【发布时间】:2017-06-22 12:53:08
【问题描述】:

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

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

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

【问题讨论】:

  • 您需要想出一个数据结构,它可以让您轻松识别刺痛,不会对内存造成巨大负担,并且可以让您启动匹配。此任务的一个可能是suffix tree。您需要将字典文件加载到其中,并在读取测试文件时使用它。但是你的问题离题了,因为它仍然太宽泛了。
  • 你能把你的代码贴出来吗?

标签: c dictionary spell-checking


【解决方案1】:

您可以按照以下步骤操作:

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

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

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

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

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

研究这些标准函数:

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

【讨论】:

  • 非常感谢,我设法使用字典文件和示例文件进行拼写检查 :) 现在我在删除标点符号时遇到了问题:/
猜你喜欢
  • 2011-05-28
  • 2010-10-26
  • 2021-03-08
  • 2012-10-09
  • 2011-05-30
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多