gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:42:56 25 4
gpt4 key购买 nike

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

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

字典的格式为:

单词\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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com