#include #include #include /* Funkcije qsort i bsearch, uzlazno sortiranje polja stringova. Primjer 1c: pazi na tipove kod poziva qsort, bsearch. - Funkcija za usporedbu prima pokazivace korektnog tipa, a cast funkcije je samo u pozivu qsort. Koristi ime tipa za cast. - Eksplicitni cast u pozivu bsearch. */ /* Elegantnije rjesenje za pozive qsort, bsearch (v. KR2, str. 119--121): Funkcije za usporedbu su napisane u "pravim" tipovima, a propisni cast ide izravno u pozivu qsort, bsearch. */ /* Ovdje uvodimo i pripadni tip - za citljiviji cast. */ typedef int (*Comp_fun) (const void*, const void*); int main(void) { char rjecnik[3][20] = {"po", "ut", "sri"}; int i; /* Cast na funkciju strcmp kod poziva. */ qsort(rjecnik, 3, 20, (Comp_fun) strcmp); for (i = 0; i < 3; ++i) puts(rjecnik[i]); /* Cast na funkciju strcmp kod poziva. */ /* Cast povratne vrijednosti bsearch. */ printf("trazi \"ut\": %s\n", (char *) bsearch("ut", rjecnik, 3, 20, (Comp_fun) strcmp)); printf("trazi \"pe\": %s\n", (char *) bsearch("pe", rjecnik, 3, 20, (Comp_fun) strcmp)); return 0; }