|
#include <stdio.h>#include <string.h>//#define PF printfint main() { int intcmp(void *ip1, void * ip2); void * lsearch(void *key, void *base, int n, int elemSize, int(* cmpfun)(void *, void *)); int arr[] = {4, 6, 2, 3, 11, 22, 15}; int n = sizeof(arr) / sizeof(int); int key = 11; int *found = lsearch(&key, &arr, n, sizeof(int), intcmp); printf("found=%p (%d)", found, *(int *) found); return 0;}int intcmp(void *ip1, void * ip2) { int *p1 = ip1, *p2 = ip2; return *p1 - *p2;}void * lsearch(void *key, void *base, int n, int elemSize, int(* cmpfun)(void *, void *)) { int i; for(i = 0; i < n; i ++) { void *elemArr = (char *)base + i * elemSize; if(cmpfun(key, elemArr) == 0) return elemArr; } return NULL;} |
|