Ecco cosa intendo... il confronto fra i membri di tipo puntatore a char non producono nessun ordinamento...
forse è come dici tu anche nel mio caso? io poi non alloco niente...
codice:
struct db{
int id;
char *Nome;
char carattere;
};
void swap(struct db *Ptr, struct db *Ptr2);
int main(){
int i,j,s;
struct db n[8]={{1, "Marco", 's'}, {2, "Luca", 'b'},
{3, "Franco", 'g'}, {4, "Mario", 'z'},
{5, "aaaaa", 'q'}, {6, "Bbbb",'f'},
{7, "Ccccc", 'a'}, {8, "Ddd", 'w'}};
s=0;
while (s!=1){
s=1;
for (i=0; i<7; i++)
if (n[i].Nome > n[i+1].Nome){
swap(&n[i], &n[i+1]);
s=0;
}
}
for (j=0; j<8; j++)
printf("%d %s %c\n", n[j].id, n[j].Nome, n[j].carattere);
return 0;
}
void swap(struct db *Ptr, struct db *Ptr2){
struct db temp;
temp=*Ptr;
*Ptr=*Ptr2;
*Ptr2=temp;
}