比较 C 中两个 2D 数组的元素,而无需 strcmp



我正在用C语言创建一个拼写检查器。我有一个字典数组,它是一个 2d 数组。因此,字典中的每个单词在 2d 数组中占一行。同样,我的输入数组也是一个 2D 数组。我想检查输入数组中行/单词的拼写。我不能使用 strcmp

输入数组示例 ['boy','girll','.','friend',']-可以包含空格,标点符号和单词。我们只关心拼写单词 如果将标点符号/空格与单词进行比较,我们将忽略它并转到下一个单词。

字典示例 ["男孩","女孩","牛"...]-都是单词

我的代码是:

for (int a = 0; a < MAX_INPUT_SIZE + 1; a++)
{
for (int b = 0; b < MAX_DICTIONARY_WORDS; b++)
{
if(tokens[a]==dict_token[b])
{
printf("correct");
}
else
{
printf("wrong");
}
}

}

输出都是"错误的"。尽管 5 个单词输入中的 6 个应该是正确的。

每个测试都返回 false,因为您使用的比较,

if(tokens[a]==dict_token[b])

正在比较两个永远不会指向同一地址的指针,因为您正在测试的tokens位于与您与之进行比较的dict_token字典的完全独立的内存位中。

您需要将两个指针tokens[a]dict_token[b]传递给一个比较函数,该函数将执行逐个字母的比较,当它发现它们之间的差异时将返回一个值,当它到达两者的末尾而没有找到差异时,它将返回另一个值。换句话说,您需要编写strcmp的实现。

最新更新