将结构内的元素与 C 中的空指针值进行比较
Compare element inside a struct with a void pointer value in C
我需要创建一个接收结构指针和空指针的函数,它 return 1 如果元素在结构上。
typedef struct {
char *sx;
int val, code, qtty;
char abc [20];
} ST_DAT;
int compare (ST_DAT *, void *);
这是比较双链表中节点的程序的一部分,但此函数用作:
int (*pfun)(ST_DAT *, void *));
问题是我不知道如何将 void *
与其他值进行比较,直到我找到或找不到里面的值。
int compare (ST_DAT *stData, void *key)
{
if (key == (*stData).val || key == (*stData).code || key == (*stData).qtty || strcmp (key,(*stData).abc) || strcmp (key,(*stData).sx) )
{
return 1;
}else{
return 0;
}
}
这是正确的吗?
(*stData).val
是 int
类型,因此您需要将 key
转换为 int *
然后像这样取消引用:
*(int *)key == (*stData).val
您必须根据要比较的数据对 key
进行类型转换。在 int
.
的情况下,您必须确保比较指针的值而不是指针本身
if (*(int*)key) == (*stData).val || *(int *)key == (*stData).code || (int *)*key == (*stData).qtty || strcmp((char *)key,(*stData).abc) || strcmp ((char *)key,(*stData).sx) )
我需要创建一个接收结构指针和空指针的函数,它 return 1 如果元素在结构上。
typedef struct {
char *sx;
int val, code, qtty;
char abc [20];
} ST_DAT;
int compare (ST_DAT *, void *);
这是比较双链表中节点的程序的一部分,但此函数用作:
int (*pfun)(ST_DAT *, void *));
问题是我不知道如何将 void *
与其他值进行比较,直到我找到或找不到里面的值。
int compare (ST_DAT *stData, void *key)
{
if (key == (*stData).val || key == (*stData).code || key == (*stData).qtty || strcmp (key,(*stData).abc) || strcmp (key,(*stData).sx) )
{
return 1;
}else{
return 0;
}
}
这是正确的吗?
(*stData).val
是 int
类型,因此您需要将 key
转换为 int *
然后像这样取消引用:
*(int *)key == (*stData).val
您必须根据要比较的数据对 key
进行类型转换。在 int
.
if (*(int*)key) == (*stData).val || *(int *)key == (*stData).code || (int *)*key == (*stData).qtty || strcmp((char *)key,(*stData).abc) || strcmp ((char *)key,(*stData).sx) )