c - 使用 C 中的排序字典对字符串进行拼写检查

标签 c string file-io dictionary

我正在尝试根据排序的字典文件检查传递给函数的单个单词字符串,但我不明白为什么它不起作用。

拼写检查器不区分大小写,因此要检查的原始单词将被复制并设置为大写。

字典的格式为:

单词\n 单词\n

按字母顺序排列,每个单词后带有换行符,没有空格或任何其他非字母字符。 正在使用 fgets 一次读入一个单词。

我有一个带有 fgets 的 while 循环,里面有一个带有 i < strlen(word) 的 for 循环 for 循环一次比较一个字符 *(word + i) == *(line + i) else break;

如果 i == strlen(word) - 1 并且它 *(word + i) == *(line + i) 它应该返回 1。 strcmp 也不为我返回 0 。 知道为什么这不起作用吗?

注意:我会发布一个代码示例,但这违反了学校政策。

最佳答案

在我看来,按照您给出的格式(word1\nword2\nword3\n...),排序并不能真正帮助您...但是。我认为您需要构建一个内存中的单词数组(只需将每个 \n 转换为 \0 并将数组中的每个指针设置为单词的开头单词)。然后你的排序就变得有用了,你可以进行二分搜索来找到你的候选项(如果找不到它意味着候选项拼写错误)。

有了二进制排序的能力,一个简单的 strcasecmp(word,dictionary[searchpoint]); 将为您进行不区分大小写的比较。

至于为什么您当前的代码不起作用,您的学校政策似乎旨在阻止您获得有关堆栈溢出的直接帮助...因为如果不看到您的代码,就不可能真正得到直接答案。

关于c - 使用 C 中的排序字典对字符串进行拼写检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20000349/

相关文章:

c - 结构和警告 C

c - Strncpy 在字符串末尾给出不需要的字符

java - JNI 字符串和 C 字符串

Java UTF-8 编码产生不正确的输出

python - 使用 makefile 将 Python 输出写入文件

c - fread 中的段错误

javascript - 提取元素内的所有有效 URL 字符串 (JavaScript)

java - 在文件中有效地存储 float 和 short 值的数组

c - 将文件中的值读入结构数组时出错

python - 优雅的字符串方法(如何变得更Pythonic)