--- ~Rick <[EMAIL PROTECTED]> escreveu: > I am populating a number of entries and want to sort on the field > linedata.transferPath. I'm using qsort and have built a comparator > function but cannot figure out how to specify the transferPath > element. > > But, I want to sort on an element within a structure. I've tried, and > it fails. How can I specify the element to the comparator? (Darn > pointers!)? I haven't worked with qsort or comparator functions before. > > int compareEntry (const void * a, const void * b) > { > char *a1 = (char *)a; > char *b1 = (char *)b; > char *a2 = a1.transferPath; > char *b2 = b1.transferPath; > > return (strcmp((char *)a2, (char *)b2)); > }
The right code is: int compareEntry (const void * a, const void * b) { struct ENTRY *e1 = (struct ENTRY*)a; struct ENTRY *e2 = (struct ENTRY*)b; char *c1 = e1->transferPath; char *c2 = e2->transferPath; return (strcmp(c1, c2)); } You may use typedef struct to do not need to type struct before every ENTRY. Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail.yahoo.com/