utilisation de qsort et bsearch
Bonjour,
j'ai un problhme avec l'utilisation de qsort et bsearch pour trier et faire une recherche sur un tableau de long en C
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
void query_and(long first_query[MAX_RESULT], long second_query[MAX_RESULT], long result_query[MAX_RESULT])
{
int i = 0;
int ind = 0;
int size1 = sizeof(first_query);
int size21 = sizeof(second_query);
//tri les deux tableaux
qsort(first_query, sizeof(first_query), sizeof(long), (long (*) (const void*, const void*)) compare_long);
qsort(second_query, sizeof(second_query), sizeof(long), (long (*) (const void*, const void*)) compare_long);
//recherche les valeurs identiques dans les deux tableaux
while(i<sizeof(first_query))
{
long* long_ptr = bsearch(second_query, first_query[i], sizeof(second_query), sizeof(long),
(long (*) (const void *, const void *)) compare_long);
if(*long_ptr)
{
result_query[ind] = first_query[i];
ind++;
}
i++;
}
}
int compare_long(long* a, long* b)
{
return(*a - *b);
} |
Problhre rencontri :
- qsort :
le tableau est bien trier sauf sont derriere element.
exemple:
AVANT
{55, 2, 45, 1, 54}
APRES
{1, 2, 45, 55, 54}
- bsearch
Quand il passe dans la fonction compare-long, *b est toujours inditermini et donc il plante.
Quelq'un aurait-il un idie?
Merci