/* The prototype for qsort is void qsort(void * base, size_t nmemb, size_t size, int (* compar)(const void *, const void *)); it's in stdlib.h remember that size_t is just unsigned int */ ///////////////////////////////////////////////////////////// // to sort an array of ints int compint(const void *a, const void *b) { int aa = *(int *)a, bb = *(int *)b; return aa - bb; } qsort(ints, n, sizeof(int), compint); ///////////////////////////////////////////////////////////// // to sort a string character by character int compchar(const void *a, const void *b) { int aa = *(char *)a, bb = *(char *)b; return aa - bb; } qsort(chars, n, sizeof(char), compchar); ///////////////////////////////////////////////////////////// // to sort an array of char * strings int compstr(const void *a, const void *b) { const char *aa = *(const char **)a; const char *bb = *(const char **)b; return strcmp(aa, bb); } qsort(strings, n, sizeof(char *), compstr); ///////////////////////////////////////////////////////////// // to sort an array char[][size] of strings int compstr(const void *a, const void *b) { return strcmp((const char *)a, (const char *)b); } qsort(strings, n, size, compstr); ///////////////////////////////////////////////////////////// // to sort an array of structs struct entry { char word[8]; int blug, blag, bleg; }; entry array[111]; int compent(const void *a, const void *b) { entry *aa = (entry *)a; entry *bb = (entry *)b; return strcmp(aa->word, bb->word); } qsort(array, 111, sizeof(entry), compent); ///////////////////////////////////////////////////////////// // to sort an array of pointers to structs struct book { char *title; char *author; }; book *collection[100000]; int compbook(const void *a, const void *b) { book **aa = (book **)a; book **bb = (book **)b; book *aaa = *aa, *bbb = *bb; int r = strcmp(aaa->author, bbb->author); if (r != 0) return r; return strcmp(aaa->title, bbb->title); } /////////////////////////////////////////////////////////////