bsearch не может найти элемент, который меньше предыдущего элемента - PullRequest
0 голосов
/ 12 марта 2020

Я работаю в своей деятельности, которая включает поиск в массиве, и в настоящее время я использую bsearch в этом отношении. Проблема в том, что всякий раз, когда этот элемент меньше предыдущего, bsearch не может его искать. И более того, эта проблема начинает возникать, когда элемент, который я ищу, имеет индекс, который больше или равен 3. Я кодирую в C btw. Пожалуйста, я отчаянно нуждаюсь в вашей помощи, ребята, и это будет высоко оценено, спасибо. Вот мой код:

#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 key = 2;
  int *p;
  p = bsearch(&key,&s1->elements,s1->count,sizeof(int),cmpfunc);
  printf("%p",p,sizeof(s1->elements));

  return;
}

int main () {
  SET s1 = {{1,5,4,2,6,3},6};
  SET s2 = {{1,29,3,5},4};

  print(&s1,&s2);

  return(0);
}
...