Non l'ho collaudato, ma dovrebbe andare.
codice:#include <stdio.h> #include <stdlib.h> #define ARRSIZE(arr) ((size_t)(sizeof(arr)/sizeof(*arr))) typedef struct tagData { const char *name; float length; } Data; int DataCompare(const void * elem1, const void * elem2); int main(void) { Data dt[3]; dt[0].name = "pippo"; dt[0].length = 0.412 dt[1].name = "pluto"; dt[1].length = 0.341 dt[2].name = "minnie"; dt[2].length = 0.123 qsort(dt,ARRSIZE(dt),sizeof(*dt),DataCompare); for(int i=0;i<ARRSIZE(dt);i++) printf("%s %f",dt[i].name,dt[i].length); return 0; } int DataCompare(const void * elem1, const void * elem2) { return (int)((const Data *)elem1->length-(const Data *)elem2->length); }

Rispondi quotando