Charlie Gordon a écrit :
/* bsearch function */
#include <stdlib.h>
void *(bsearch)(const void *key, const void *base,
size_t nelem, size_t size, _Cmpfun *cmp)
{ /* search sorted table by binary chop */
const char *p = base;
size_t n;
for (p = base, n = nelem; 0 < n; )
{ /* check midpoint of whatever is left */
const size_t pivot = n >> 1;
const char *const q = p + size * pivot;
const int val = (*cmp)(key, q);
if (val < 0)
n = pivot; /* search below pivot */
else if (val == 0)
return ((void *)q); /* found */
else
{ /* search above pivot */
p = q + size;
n -= pivot + 1;
}
}
return (NULL); /* no match */
}
T'as scanné le code ? t'as une version numérique du livre ? T'as quand même pas recopié le code à la main, c'est copie conforme, aux espaces près, de sa Figure 13.8 page 356 ?