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 : Sélectionner tout - Visualiser dans une fenêtre à part
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