可以strcmp()比较动态字符数组和静态字符数组

Can strcmp() Compare a Dynamic Character Array with a Static Character array?

本文关键字:字符 数组 静态 动态 比较 strcmp 可以      更新时间:2023-10-16

也许这是一个愚蠢的问题,但我之所以问这个问题,是因为我使用strcmp()来比较动态数组和静态数组,但它似乎给出了错误的结果。数组应该相等,但strcmp()返回false。当我暂停程序时,这些数组之间唯一不同的两件事是它们的内存位置。

我不能向你展示整个代码,但这是我函数的一部分,其中有两个变量:

stock * Table::retrieveStock(const char tick[])
{
    uint8_t index = hashing(tick);
    if (table[index])
    {
        bool test = strcmp(table[index]->data->getTick(), tick);
    //irrelevant code

下面是一些指针在Table类中声明的方式:

struct node
    {
        stock * data;
        node * next;
        node()
        {
            stock();
            next = nullptr;
        }
        node(stock *& item)
        {
            data = item;
            next = nullptr;
        }
    };
    node ** table;

我有一个类对象的数组,不管怎样,重点是我在比较两个刻度值,它们应该相等。我正在从具有getTick()功能的对象中取出一个:

const char * stock::getTick() const
{
    return tick;
}

并且一个被传递到函数:CCD_ 5。我对这里的代码出了什么问题一无所知。我很想给你们更多的代码,但我看不出它会怎么做,只会让你们更难解决这个问题。

编辑:也许这会有所帮助;我只是想到了。这正是我的编译器所说的值:

curr->data  0x005d93e8 {tick=0x005d9f38 "TSLA" name=0x005da100 "2" value=2.00000000 ...}    stock *

tick    0x004afb20 "TSLA"   const char *

strcmp()对于匹配返回0(对于不匹配返回非零)。它不会像您预期的那样返回truefalse