【问题标题】:strcmp not comparingstrcmp 不比较
【发布时间】:2013-03-09 03:24:07
【问题描述】:

我需要一些有关 strcmp 函数的帮助。我正在尝试将 const char 单词与 char 数组进行比较。但无论出于何种原因,strcmp 都没有比较这两种类型。这就是我所拥有的:

typedef struct Node {    
    char word[LENGTH+1];  
    struct Node *Next;    
}
Node;


for (NodePointer=hashtable->table[hashval];NodePointer !=NULL;NodePointer=NodePointer->Next)
    {
        i=0;
        i=strcmp(word,NodePointer->word); 

        if (i==0) 
          return true;
    }

    return false;
}

有人知道可能是什么问题吗?我是否应该事先将每个 null 终止?

【问题讨论】:

  • strcmp 依靠终止空字符来表示字符串的结尾,因此如果您的字符串中的一个不以空字符结尾,那么您肯定会遇到问题。跨度>
  • 我们可能需要的不止这些,但是是的,您应该 nul 终止您传递给 strcmp 的任何内容。
  • 好吧,我保证 strcmp 可以处理 有效 输入,所以..
  • 好的,这完全是一个愚蠢的问题,但我如何在结构中终止数组?
  • 添加分配word的行

标签: c linked-list strcmp


【解决方案1】:
  1. 确保word'\0' 终止。
  2. 你可以考虑使用strncmp

    strncmp(word, NodePointer->word, LENGTH)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多