Originariamente inviato da oregon
Non è detto che ordini tutto in una sola passata ... devi ripetere la for finché non è tutto ordinato.

E poi devi fermare il for un carattere prima altrimenti x[i+1] va oltre ...

codice:
void alfasort(char x[]){
     char temp;
     int flag=1;

	while(flag)
	{
		flag=0;
		
		for(int i=0; i<strlen(x)-1; i++)
		{
			if(x[i]>x[i+1])
			{
				temp=x[i];
				x[i]=x[i+1];
				x[i+1]=temp;
				flag=1;
			}//if
		}//for
	}
}
ok ora va bene!! non capisco solo perchè hai usato flag con 0 e 1 invece di usare un bool con true e false!
comunque non sarebbe meglio inserire un ciclo for al posto del while?
cosi mi funziona: for(int pass=0; pass<strlen(x); pass++)