Проект класса включает в себя сортировку массива строк, где каждая строка содержит одинаковое количество столбцов, например:
Cartwright Wendy 93
Williamson Mark 81
Thompson Mark 100
Anderson John 76
Turner Dennis 56
Программа принимает аргумент командной строки, для которого производится сортировка столбца, и выводит отсортированные строки без изменений.
Я хотел бы использовать strtok для разбиения копий каждой строки на столбцы и создания структур для каждой строки следующим образом:
struct line {
char * line;
char column_to_sort_on[MAX_COLUMN];
}
Моя проблема в указателе функции сравнения, который qsort принимает в качестве аргумента. Если я правильно понимаю, функция сравнения должна взять два константных пустых указателя на сортируемые элементы и вернуть int. Это означает, что я не могу передать указатели на структуры в функцию сравнения, потому что это не то, что будет сортировать qsort. Я не могу передать номер столбца для сортировки в функцию сравнения, потому что он может принимать только два аргумента. Как я могу обойти это, чтобы отсортировать эти строки на основе определенных столбцов?
edit: Сортировка ограничена qsort или моей собственной, если я действительно хочу. Дайте выбор, я выбираю qsort. :)
edit # 2: Кажется, что консенсус либо использует глобальную переменную для номера столбца, либо просто использует qsort для сортировки массива структур. Я не думал просто о сортировке структур и использовании указателя в них, чтобы распечатать исходную строку. Я думаю, что это то, что я буду делать. Спасибо всем за помощь!