ソートしたいもの(構造体へのポインタの配列)は比較しているもの(文字列)ではないため、これがqsortで可能かどうかはわかりません。
これは私のプログラムの要約版です (qsort() を呼び出す前にすべての学生データがコアにあり、n がソートするレコードの数であると仮定します):
struct student {
char lname[NAMESIZE + 1];
char fname[NAMESIZE + 1];
short mid;
short final;
short hmwks;
};
int cmp(const void *, const void *);
int
main(int argc, char **argv)
{
int n;
struct student *data[MAX];
qsort(data, n, sizeof(struct student *), cmp);
return 0;
}
int
cmp(const void *p0, const void *p1)
{
return strcmp((*(struct student *) p0).lname,
(*(struct student *) p1).lname);
}