0094-bsearch.c (553B)
1 #include <assert.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 /* 6 output: 7 testing 8 done 9 end: 10 */ 11 12 static int 13 cmp(const void *pp1, const void *pp2) 14 { 15 const int *p1 = pp1, *p2 = pp2; 16 17 return *p1 - *p2; 18 } 19 20 static int 21 test(void) 22 { 23 int *p, key, i, arr[64]; 24 25 for (i = 0; i < 64; i++) 26 arr[i] = rand(); 27 28 qsort(arr, 64, sizeof(int), cmp); 29 30 for (i = 0; i < 63; i++) 31 assert(arr[i] <= arr[i+1]); 32 33 key = arr[33]; 34 p = bsearch(&key, arr, 64, sizeof(int), cmp); 35 assert(*p == arr[33]); 36 } 37 38 int 39 main(void) 40 { 41 puts("testing"); 42 test(); 43 puts("done"); 44 45 return 0; 46 }