【发布时间】:2015-06-12 03:55:04
【问题描述】:
所以我需要创建一个拼写检查器,它接受一个输入文件并使用给定的字典文件检查它,并输出拼写错误的单词。我有一个想法,但是我卡在需要比较每个文件中的单词的地方。我不知道如何将一个文件中的一个单词与另一个文件中的所有单词进行比较。我在想我会使用strstr() 函数来做到这一点,但我再次陷入了如何实际实现它的困境。到目前为止,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main(int argc, char* argv[]) {
FILE *inp = NULL;
FILE *dic = NULL;
inp = fopen(argv[1], "r");
dic = fopen("american", "r");
char *wordsString;
char *dictionary;
int inputStatus1, inputStatus2, i;
inputStatus1 = fscanf(inp, %s, wordsString);
inputStatus2 = fscanf(dic, %s, dictionary);
}
【问题讨论】:
-
我建议不要使用
strstr()。它不仅是一个非标准的扩展,而且对于拼写检查(尤其是对于大型字典)而言,它的效率非常低。您可能想要使用字典单词和二进制搜索的排序列表,或者包含字典的哈希表。排序列表更容易,但速度较慢。 -
@brenns10
strstr是一个 C 标准函数,并且一直如此。 -
@brenns10 Linux 程序员手册:
strstr()函数符合 C89 和 C99。 -
@Lundin @ace 糟糕,我误读了 GNU 手册页,其中
strcasestr()是一个非标准扩展。我关于效率的观点仍然成立。 -
@bikerguy 请注意,在
fscanf()调用中,您需要在%s(如"%s")周围加上双引号。
标签: c spell-checking