在没有strcmp的情况下比较C中两个2d数组中的元素

在没有strcmp的情况下比较C中两个2d数组中的元素,c,string,compare,C,String,Compare,我正在用C语言创建一个拼写检查器。我有一个字典数组,它是一个2d数组。因此,字典中的每个单词在2d数组中取一行。同样,我的输入数组也是2d数组。我想检查输入数组中行/词的拼写。我不能用strcmp 输入数组示例 ['boy'、'girll'、'、'friend'、''-可以包含空格、标点符号和单词。我们只关心单词的拼写 如果将标点符号/空格与一个单词进行比较,我们将忽略它并转到下一个单词 字典示例 [‘男孩’、‘女孩’、‘牛’…]-都是文字 我的代码是: for (int a = 0; a &

我正在用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");
        }

    }


    }

输出完全错误。虽然6个单词中有5个应该是正确的

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

if(tokens[a]==dict_token[b])
比较两个永远不会指向同一地址的指针,因为您正在测试的令牌位于与您正在比较它们的dict_令牌字典完全不同的内存位中


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

您能发布更多代码吗?例如,令牌和dict_令牌在哪里声明?请看Take the、read和[MVCE]。我们需要查看哪些令牌和dict_令牌才能提供帮助。我要补充的是,您的做法是错误的。您正在比较两个数组中彼此没有明显对应关系的字符。将您的数据集缩减为几个示例,演示您的问题并发布这些示例。通常,您希望迭代输入中的单词,然后在字典中搜索它们。如果字典是某种二叉树,那就更好了,但是你能使用指向单词和b搜索的指针的排序数组来执行二叉搜索吗?这样更容易理解,我已经尽了最大的努力来表达答案,这样可以帮助您编写函数,而无需为您编写函数。试试看!我创建了另一个嵌套for循环来进行字母比较。但它效率低下,更重要的是打印错误/正确功率的3倍。你能给我一些提示吗?