#include #include void *lsearch(const void *key, void *base, size_t *nelp, size_t width, int (*compar)(const void *, const void *)) { char (*p)[width] = base; size_t n = *nelp; size_t i; for (i = 0; i < n; i++) if (compar(p[i], key) == 0) return p[i]; *nelp = n+1; return memcpy(p[n], key, width); } void *lfind(const void *key, const void *base, size_t *nelp, size_t width, int (*compar)(const void *, const void *)) { char (*p)[width] = (void *)base; size_t n = *nelp; size_t i; for (i = 0; i < n; i++) if (compar(p[i], key) == 0) return p[i]; return 0; }