/* * C Sorting example mostly from qsort(3) */ #include #include #include #include static int cmpstringp(const void *p1, const void *p2) { /* The actual arguments to this function are "pointers to pointers to char", but strcmp(3) arguments are "pointers to char", hence the following cast plus dereference */ return strcmp(*(char * const *)p1, *(char * const *)p2); } int main(int argc, char *argv[]) { int j; if (argc < 2) { fprintf(stderr, "Usage: %s ...\n", basename(argv[0])); exit(EXIT_FAILURE); } qsort(&argv[1], argc - 1, sizeof(argv[1]), cmpstringp); for (j = 1; j < argc; j++) { puts(argv[j]); } exit(EXIT_SUCCESS); }