我比较什么类型的数据?

时间:2012-12-04 23:07:46

标签: c stack compare

我必须检查s1和s2的顶牌。 s1是一堆卡片,因此是s2。我已经拥有的stack_top函数如下:

/* Retrive data from the top of the stack */
node_data stack_top(stack *s){
  if(!stack_empty(s)){      /* If the stack is not empty */
    return (s->top->data);  /* Return the data */
  }
  else{             /* Otherwise there is an error */
    cardlist_error("stack_top called on empty stack");
  }
}

我有

while (strcmp (stack_top(s1), stack_top(s2)) ==0 )
//then do the following..

但是我得到了segmentation fault,我应该如何比较它们?

1 个答案:

答案 0 :(得分:1)

如果您想检查两个stack指针是否都指向同一个实例,只需检查其地址是否与s1 == s2匹配。

如果要检查两个stack指针是否包含相同数据且结构只有非指针成员,则可以检查memcmp(s1, s2, sizeof(*s1)) == 0

如果要检查两个stack指针是否包含相同数据且结构有指针(例如字符串),则可能需要编写一个函数,通过依次比较每个实例来比较两个实例。