【问题标题】:How to search an array within a structure using bsearch in c [closed]如何在c中使用bsearch搜索结构中的数组[关闭]
【发布时间】:2020-06-24 06:02:21
【问题描述】:

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

#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);
}

【问题讨论】:

  • 你应该用预期的结果来加强你的问题,也许可以更详细地解释。

标签: c arrays struct bsearch


【解决方案1】:

你需要使用

sizeof(*s1->elements)

与此相同

sizeof( int )

而不是

sizeof(s1->elements)

bsearch的电话中。

也代替

&s1->elements

使用

s1->elements

电话看起来像

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

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

【讨论】:

  • 非常感谢@Vlad先生,它刚刚解决了我的问题。 ^_^
猜你喜欢
  • 2020-03-26
  • 2013-04-30
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
相关资源
最近更新 更多