拼写器适用于某些单词而不适用于其他单词。不知道问题出在哪里

帕提班巴拉

我是 CS50 问题集 4,拼写器,哈希表版本。

代码在字典和文本中正确检测单词数。然而,它拼错了单词。

// Loads dictionary 
bool load(const char *dictionary)
{
    // Initialize hash table
    for (int i = 0; i < N; i++)
    {
        hashtable[i] = NULL;
    }

    // Open dictionary
    FILE *file = fopen(dictionary, "r");
    if (file == NULL)
    {
        unload();
        return false;
    }

    // Buffer for a word
    char word[LENGTH + 1];

    // Insert words into hash table
    while (fscanf(file, "%s", word) != EOF)
    {
        node *new_node = malloc(sizeof(node));
        int j = hash(word);

        // check if out of memory
        if (new_node == NULL)
        {
            unload();
            return false;
        }
        else
        {
            strcpy(new_node->word, word);
            new_node->next = hashtable[j];
            hashtable[j] = new_node;
            }
        }
    }

    fclose(file);
    return true;
}

// Returns number of words in dictionary if loaded 
{
    unsigned int count = 0;
    for(int i = 0; i < 26; i++)
    {

        node *cursor = hashtable[i];
        while (cursor != NULL)
        {
            cursor = cursor->next;
            count++;
        }
     }
    return count;
}


 // Returns true if word is in dictionary else false
bool check(const char *word)
{
    int i = hash(word);
    node *chk = hashtable[i];

    while (chk != NULL)
    {
        if (strcmp(chk->word, word))
        {
            return true;
        }
        chk = chk->next;
    }
    return false;
}

// Unloads dictionary from memory, returning true if successful else false
bool unload(void)
{
    // TODO

    for (int i = 0; i < N; i++)
    {
        node *cursor = hashtable[i];

        while (cursor != NULL)
        {
            node *temp = cursor;
            cursor = cursor->next;
            free(temp);
        }
    }
return true;
}

如果选择大词典,拼错的单词总是 0(无论文本是什么),如果选择小词典(使用 cat.txt),它会按预期显示。任何定制的词典都会将一些正确的单词显示为拼错的单词。

DinoCoderSaurus

来自man strcmp[强调添加]:

返回值
strcmp() 和 strncmp() 函数返回一个小于、等于或大于零的整数,如果发现 s1(或其前 n 个字节)分别小于、匹配或大于比s2。

您可以通过 debug50 获取一个小的定制字典,看看在这一行会发生什么:
if (strcmp(chk->word, word))

由于strcmp返回 an int,请像测试一样测试它int,而不是测试它bool而且不要忘记:在检查应区分敏感!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MS Word 2007中的拼写检查器适用于某些语言,但不适用于其他语言

来自分类Dev

MySQL全文搜索不适用于某些单词

来自分类Dev

子集不适用于某些数值,但适用于其他数值

来自分类Dev

滚动功能适用于某些单击事件,但不适用于其他事件

来自分类Dev

.htaccess重定向仅适用于某些页面,而不适用于其他页面

来自分类Dev

通用JS函数适用于某些div,不适用于其他div

来自分类Dev

媒体查询不适用于某些类的Bootstrap,但适用于其他类

来自分类Dev

插入运算符不适用于向量,我不知道为什么

来自分类Dev

宽带路由器适用于某些设备,但不适用于其他设备和某些站点,但不适用于其他设备

来自分类Dev

URL重写:规则适用于某些.php页面,但不适用于其他页面。

来自分类Dev

属性错误:python中的exp,适用于某些功能,不适用于其他功能

来自分类Dev

rails-bootstrap-forms适用于某些样式,但不适用于其他样式

来自分类Dev

分割多页PDF的Python脚本仅适用于某些PDF,而不适用于其他PDF

来自分类Dev

Physics2D.Raycast适用于某些对象,但不适用于其他对象

来自分类Dev

验证系统,它适用于某些输入,不适用于其他输入,使用jQuery

来自分类Dev

POST方法/创建操作仅适用于某些方法,而不适用于其他方法,Feedzirra

来自分类Dev

rails-bootstrap-forms适用于某些样式,但不适用于其他样式

来自分类Dev

平滑的点击缩放功能适用于某些标记但不适用于其他标记

来自分类Dev

Facebook OG元数据仅适用于某些页面,不适用于其他页面;调试器挂起

来自分类Dev

Telerik:搜索不适用于单词中间的Multiselect

来自分类Dev

创建单词列表不适用于句子列表

来自分类Dev

将文本设置为居中仅适用于一个微调器,而不适用于其他

来自分类Dev

PHP jQuery Ajax呼叫仅适用于Chrome,不适用于其他浏览器

来自分类Dev

svg 代码动画不适用于边缘,但适用于任何其他浏览器

来自分类Dev

Javascript 不适用于 Internet Explorer,但适用于所有其他浏览器。为什么?

来自分类Dev

MySQL预备语句不适用于SELECT,但适用于所有其他语句

来自分类Dev

RegEx不适用于.NET,但适用于其他RegEx实施

来自分类Dev

RewriteRule适用于一种情况,但不适用于其他情况

来自分类Dev

函数模板适用于本地lambda,但不适用于其他函数

Related 相关文章

  1. 1

    MS Word 2007中的拼写检查器适用于某些语言,但不适用于其他语言

  2. 2

    MySQL全文搜索不适用于某些单词

  3. 3

    子集不适用于某些数值,但适用于其他数值

  4. 4

    滚动功能适用于某些单击事件,但不适用于其他事件

  5. 5

    .htaccess重定向仅适用于某些页面,而不适用于其他页面

  6. 6

    通用JS函数适用于某些div,不适用于其他div

  7. 7

    媒体查询不适用于某些类的Bootstrap,但适用于其他类

  8. 8

    插入运算符不适用于向量,我不知道为什么

  9. 9

    宽带路由器适用于某些设备,但不适用于其他设备和某些站点,但不适用于其他设备

  10. 10

    URL重写:规则适用于某些.php页面,但不适用于其他页面。

  11. 11

    属性错误:python中的exp,适用于某些功能,不适用于其他功能

  12. 12

    rails-bootstrap-forms适用于某些样式,但不适用于其他样式

  13. 13

    分割多页PDF的Python脚本仅适用于某些PDF,而不适用于其他PDF

  14. 14

    Physics2D.Raycast适用于某些对象,但不适用于其他对象

  15. 15

    验证系统,它适用于某些输入,不适用于其他输入,使用jQuery

  16. 16

    POST方法/创建操作仅适用于某些方法,而不适用于其他方法,Feedzirra

  17. 17

    rails-bootstrap-forms适用于某些样式,但不适用于其他样式

  18. 18

    平滑的点击缩放功能适用于某些标记但不适用于其他标记

  19. 19

    Facebook OG元数据仅适用于某些页面,不适用于其他页面;调试器挂起

  20. 20

    Telerik:搜索不适用于单词中间的Multiselect

  21. 21

    创建单词列表不适用于句子列表

  22. 22

    将文本设置为居中仅适用于一个微调器,而不适用于其他

  23. 23

    PHP jQuery Ajax呼叫仅适用于Chrome,不适用于其他浏览器

  24. 24

    svg 代码动画不适用于边缘,但适用于任何其他浏览器

  25. 25

    Javascript 不适用于 Internet Explorer,但适用于所有其他浏览器。为什么?

  26. 26

    MySQL预备语句不适用于SELECT,但适用于所有其他语句

  27. 27

    RegEx不适用于.NET,但适用于其他RegEx实施

  28. 28

    RewriteRule适用于一种情况,但不适用于其他情况

  29. 29

    函数模板适用于本地lambda,但不适用于其他函数

热门标签

归档