也许这是一个愚蠢的问题,但我问的原因是因为我使用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;
}
并将一个传递给函数:const char tick[]
。我对这里的代码有什么问题我很无能为力。我很乐意为你们提供更多的代码,但我看不出它会怎么做,只能让你解决这个问题更加困难。
编辑:也许这会有所帮助;我只想到了它。这正是我的编译器所说的值:
curr->data 0x005d93e8 {tick=0x005d9f38 "TSLA" name=0x005da100 "2" value=2.00000000 ...} stock *
和
tick 0x004afb20 "TSLA" const char *
答案 0 :(得分:3)
strcmp()
为匹配返回0(对于不匹配,返回非零)。它不会像您期望的那样返回true
或false
。