O mais fácil para ordernar é sem duvida o qsort da stdlib.h #include <stdlib.h>
/*funcao de comparacao*/
int compara(const void *a, const void *b)
{
char *aa = (char *)a;
char *bb = (char *)b;
return *a - *b;
}
...
qsort(palavra, strlen(palavra), sizeof(char), compara);
... o qsort recebe um vetor a ser ordenado, no caso um vetor de chars, a quantidade de elementos no vetor (strlen(palavra)), o tamanho de cada elemento (sizeof (char)) e uma funcao de comparacao. Normalmente o pessoal se perde um pouco nessa funcao, ela precisa obrigatoriamente retornar um inteiro e receber dois paramentros const void *. Isso porque o qsort não sabe qual é o tipo de dado que você está arrumando. Dentro da funcao, normalmente a primeira coisa que se faz é um cast explicito ( char *aa = (char *)a; ), mostrando ao compilador que a era um ponteiro para char. Não se esqueça de, quando ver a diferença fazer *aa para pegar o seu valor e não o ponteiro. Espero não ter ido longe de mais, mas aprenda o qsort, ele vai ser útil!