如何使用c中的B搜索在结构中搜索数组

如何使用c中的B搜索在结构中搜索数组,c,arrays,struct,bsearch,C,Arrays,Struct,Bsearch,请帮助我,我不明白为什么我不能将一个结构中的数组中的元素搜索到另一个结构中的另一个数组。 谢谢你们的帮助,伙计们会非常感激的 #include<stdio.h> #include<stdlib.h> #define MAX 10 typedef struct{ int elements[MAX]; int count; }SET; int cmpfunc(const void * a, const void * b) { return (*(in

请帮助我,我不明白为什么我不能将一个结构中的数组中的元素搜索到另一个结构中的另一个数组。 谢谢你们的帮助,伙计们会非常感激的

#include<stdio.h>
#include<stdlib.h>
#define MAX 10

typedef struct{
    int elements[MAX];
    int count;
}SET;

int cmpfunc(const void * a, const void * b) {
   return (*(int*)a > *(int*)b) - (*(int*)a < *(int*)b);
}

void print(SET *s1, SET *s2){
    int *p;
    p = bsearch(&s2->elements[1],&s1->elements,s1->count,sizeof(s1->elements),cmpfunc);
    printf("%p",p);

    return;
}

int main () {
    SET s1 = {{5,20,29,32,63},5};
    SET s2 = {{1,29,3,5},4};

    print(&s1,&s2);

   return(0);
}
#包括
#包括
#定义最大值10
类型定义结构{
整数元素[MAX];
整数计数;
}设置;
int cmpfunc(常数无效*a,常数无效*b){
返回(*(int*)a>*(int*)b)-(*(int*)a<*(int*)b);
}
作废打印(套*s1,套*s2){
int*p;
p=b搜索(&s2->elements[1],&s1->elements,s1->count,sizeof(s1->elements),cmpfunc);
printf(“%p”,p);
返回;
}
int main(){
集合s1={5,20,29,32,63},5};
集合s2={1,29,3,5},4};
打印(&s1和&s2);
返回(0);
}
您需要使用

sizeof(*s1->elements)
这与

sizeof( int )
而不是

sizeof(s1->elements)
在调用
b搜索时

也代替

&s1->elements
使用

这个电话看起来像

bsearch( &s2->elements[1], s1->elements, s1->count, sizeof(*s1->elements), cmpfunc );
请注意,转换说明符
%x
不能与指针一起使用。如果找到了目标值,请使用
%p
或取消引用找到的指针并使用
%x

您需要使用

sizeof(*s1->elements)
这与

sizeof( int )
而不是

sizeof(s1->elements)
在调用
b搜索时

也代替

&s1->elements
使用

这个电话看起来像

bsearch( &s2->elements[1], s1->elements, s1->count, sizeof(*s1->elements), cmpfunc );

请注意,转换说明符
%x
不能与指针一起使用。如果找到了目标值,请使用
%p
或取消引用找到的指针并使用
%x

您应该使用预期结果增强您的问题,并可能会进行更详细的解释。您应该使用预期结果增强您的问题,并可能会进行更详细的解释。非常感谢您,先生@Vlad刚刚解决了我的问题问题^_^非常感谢您,先生@Vlad它刚刚解决了我的问题^_^