Как отсортировать имя символа в структуре, используя язык C - PullRequest
1 голос
/ 25 ноября 2010

как вы можете сортировать char firstName в функции, и имена уже считываются из текстового файла, а также могут использоваться внешние библиотеки Все имена учеников представлены в текстовом файле, который читается в массив студенческих записей

struct student{
   char*lastName; /*name of the student*/
   char*firstName;
   int age;       /*age of the student*/
   float grade[3];
}

Ответы [ 2 ]

4 голосов
/ 25 ноября 2010

Функция qsort обычно используется в C для сортировки массива.Одним из параметров является указатель на функцию сравнения.Напишите функцию, чтобы она сравнивала два указателя любым способом, который вы хотите.Вы даже можете иметь различные функции сравнения, чтобы у вас был выбор во время выполнения, который будет применен.

int StudentCompare(const void * elem1, const void * elem2)
{
    const struct student * left = (const struct student *) elem1;
    const struct student * right = (const struct student *) elem2;
    int result;
    result = strcmp(left.firstName, right.firstName);
    if (result == 0)
        result = strcmp(left.lastName, right.lastName);
    return result;
}
0 голосов
/ 25 ноября 2010

Самый простой способ, если вы не можете использовать внешние библиотеки, это использовать пузырьковую сортировку. Напишите функцию, которая определяет, отсортирован ли массив struct student s. Затем напишите функцию, которая проходит через такой массив, сравнивая соседние пары учащихся. Если они вышли из строя, поменяйте их местами. Используйте результат первой функции в качестве условного предложения цикла while, а вторую функцию в качестве тела.

Если вам разрешено его использовать, то qsort() из stdlib.h является безусловно лучшим подходом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...