/** * string-example * An example of using our generic sort routine using arrays of * strings. */ // +---------+-------------------------------------------------------- // | Headers | // +---------+ #include // For printf #include // For strcmp, strlen #include "sort.h" // For sort // +-------------+---------------------------------------------------- // | Comparators | // +-------------+ /** * Compare two strings using their last character. */ int lastcmp (const char *x, const char *y) { return (x[strlen(x)-1] - y[strlen(y)-1]); } // lastcmp // +---------+-------------------------------------------------------- // | Helpers | // +---------+ /** * print_strings (strings, size) * Print an array of integer pointers. */ void print_strings (char *strings[], int size) { int i; for (i = 0; i < size; i++) printf ("%s ", strings[i]); printf ("\n"); } // print_strings /** * example (strings, size) * Do an example. */ void example (char *strings[], int size) { printf ("Original: "); print_strings (strings, size); sort (strings, 0, size-1, strcmp); printf ("Sorted: "); print_strings (strings, size); sort (strings, 0, size-1, lastcmp); printf ("LSorted: "); print_strings (strings, size); printf ("\n"); } // example // +------+----------------------------------------------------------- // | Main | // +------+ int main () { char *strings0[] = { "chucacabra", "elephant", "angel", "baboon", "dragon", "jackalope", "unicorn", "lagomorph" }; example (strings0, sizeof(strings0) / sizeof(char *)); char *strings1[] = { "za", "yb", "az", "by", "cx", "xc", "wd", "dw", "ev", "ve", "uf", "fu", "tg", "gt", "hs", "sh" }; example (strings1, sizeof(strings1) / sizeof(char *)); return 0; } // main