>>29
純粋に質問なんだが、

struct man{
double a;
double b;
double sub;
double add;
double multi;
};

int comp( const void *c1, const void *c2 )
{
man test1 = *(man *)c1;
man test2 = *(man *)c2;

int tmp1 = test1.sub;
int tmp2 = test2.sub;

return tmp1 - tmp2;
}

関数中で一度デリファレンスするのはどういう流儀?
とくにこの場合は
int comp( const void *c1, const void *c2 )
{
return ((man *)c1)->sub - ((man *)c2)->sub;
}
で行けそうだし(未確認ですまん)、
余計な代入が無いからスカッとしそうだけど。