Credo che il suo problema non sia l' ordinamento di per se, ma il dare un valore alle stringhe.
Bene, la strcmp oltre a ritornare 0 se due stringhe sono uguali, può ritornare un valore maggiore di zero se il primo carattere che è differente dalla stringa confrontata ha un valore maggiore (valore ascii), un valore minore di zero se il primo carattere differente confrontato con la stringa ha valore minore.
Per cui se confronti N stringhe tutte diverse tra di loro, la strcmp non ritorna mai zero e tra due stringhe confrontate c'è sempre una reputata "maggiore" dell' altra.Per cui , ad esempio in un bubblesort, puoi sempre confrontare due stringhe e decidere qual' è maggiore.Ovviamente il criterio con il quale assegnare i valori potrebbe essere diverso da quello della strcmp, il "valore di una stringa" non è una cosa assoluta, potresti stabilire un criterio differente, fare una funzione che decide che valori dare alle stringhe.