一个类项目涉及对一个字符串数组进行排序,每个字符串包含相同数量的列,如下所示:
卡特赖特温迪 93 威廉姆森马克 81 汤普森马克 100 安德森约翰 76 特纳丹尼斯 56
该程序接受一个命令行参数来指定要排序的列,并且应该打印出未修改的排序字符串。
我想使用 strtok 将每个字符串的副本分解为列,并为每一行制作这样的结构:
struct line {
char * line;
char column_to_sort_on[MAX_COLUMN];
}
我的问题在于 qsort 作为参数的比较函数指针。如果我理解正确,比较函数必须采用两个指向要排序的项目的const void 指针,并返回一个 int。这意味着我不能将指向结构的指针传递给比较函数,因为这不是 qsort 将要排序的内容。我不能将列号传递给比较函数,因为它只能接受两个参数。如何解决这个问题以根据特定列对这些字符串进行排序?
编辑:如果我真的想要,排序仅限于 qsort 或我自己的。给出选择,我选择qsort。:)
编辑#2:共识似乎是使用全局变量作为列号,或者只使用 qsort 对结构数组进行排序。我没想过只是对结构进行排序,然后使用其中的指针打印出原始字符串。我想这就是我要做的。感谢大家的帮助!