Ciao,
in pratica hai sbagliato l'algoritmo di sort.

te l'ho riscritto .

codice:
for (i=0; i<(strlen(p1) - 1); i++) 
{ 
    if (p1[i]>p1aux[i+1]) 
    { 
            temp=p1aux[i]; 
            p1aux[i]=p1aux[i+1]; 
            p1aux[i +1]=temp; 
            i = -1; 
     } 
}
Dopo che confronti due lettere e le scambi, devi far ripartire il ciclo.

La prossima volta indenta un po' meglio il codice.