#include #include #include #include char *cad[] = { "AAA AAAAA", "AA AA BBA", "A AAA AA", "A B B C E", "A D E D E", "1 2 3 4 5", "123456789", "áBCDEFGHI", "bBCDEFGHI", "éBCDEFGHI", "é CDEFGHI", "bBCDEFGHI", "zBCDEFGHI", "AAAAAAAAA", " AAAAA", " / AAAAA", " ( AAAAA", ". AAAAA", " ZZZZZ", }; int mycmp(const void *a, const void *b) { return strcoll(*(const char **)a, *(const char **)b); } main() { int i, n = sizeof(cad)/sizeof(char *); char *buf; if ((buf = setlocale(LC_COLLATE, "es_ES")) != NULL) { printf("Locale %s fijado con exito\n", buf); } else { printf("No se pudo fijar el locale %s\n", buf); } qsort(cad, n, sizeof(char *), mycmp); for(i = 0; i < n; ++i) { puts(cad[i]); } return 0; }